正则表达式把所有号码从JavaScript中的字符串和PHP

问题描述:

用正则表达式玩弄从字符串正则表达式把所有号码从JavaScript中的字符串和PHP

删除所有数字,我想出了这个:

/([^0-9])$/ 

但它只能如果字符串看起来像这样,例如Name123但如果你输入Name123Name比它不工作?

不明白为什么?

任何想法?

最好的问候, 伊利亚

+1

这是干什么用的?几乎肯定有更好的方法来做你想做的事情,但很难说不知道你正在使用哪种语言。 – 2012-08-02 14:43:25

+0

我使用JavaScript和jQuery作为用户端和我用PHP做的相同的事情。以下是我如何将它应用于用户端:var a = city.val(); var filter = /([^ \ d])/; if(filter.test(a)){do something} – 2012-08-02 15:00:08

+0

不是你的逻辑倒退了吗?您正在测试它是否至少包含一个非数字。但它仍然可以包含数字。什么是“做某事”?是应该产生错误信息的代码,还是应该在没有错误时运行的代码? – 2012-08-02 15:19:41

你的正则表达式查找一个字符不是[0-9]在字符串的结束。

要检查是否有字符串中的数字的任何地方,卸下主播:

/[0-9]/ 

要检查所有的字符不是数字,加上字符串锚的开始太:

/^[^0-9]+$/ 

这种方法被称为黑名单 - 你想要允许的不要的字符列表。请注意,最好创建一个白名单 - 您要做的想要允许的列表字符。

+0

甜!工作正常!非常感谢Mark! ;) – 2012-08-02 15:26:28

最后删除$,因为它匹配字符串的末尾。根据您使用的语言,您也可以使用\d来匹配数字而不是[0-9]

所以在你的例子/[0-9]$/匹配Name123,因为123出现在字符串的末尾,因此匹配$锚。但在另一个示例中,Name123Name,$锚点不匹配,因为数字位于字符串的中间。

+0

有趣,但我试过了,它不起作用。下面是我如何应用它:var a = city.val(); var filter = /([^ \ d])/; if(filter.test(a)){do something} – 2012-08-02 14:47:15

+0

啊,javascript ...我更像是一个perl人。不适合询问javascript的人 – 2012-08-02 14:51:01