2012-01-16 83 views
2

目前我有这个正则表达式来验证字母,破折号和空格。正则表达式否定号

/^[a-zA-Z-\s]*$/ 

现在,我很困惑这怎么可能被重写为有一个规则,它会接受一切,除了数字?

+1

要知道,它的安全始终把破折号在字符类的开始或结束。否则,它可能会被误解为像'A-z'一系列指标。在你的情况,意义是显而易见的,但并非所有的正则表达式引擎可以正确地处理这个问题。 – 2012-01-16 10:11:28

回答

3

要让任何东西,除了一些东西,你需要一个否定的字符类

[^\d] 

^开始是否定的类,\d是包含数字的预定义类字符类。

如果你真的只输入数字就可以进一步缩短这一点,还有的\d预定否定是\D

所以[^\d] = \D

您可能会发现this link to a regex reference on regular-expressions.info有用

+0

@BoyTanong我加了进一步的解释。 – stema 2012-01-16 10:05:16

0

只是使用\D拥有的[^\d]

/\D/ 
相同的含义
1
/^\D*$/ 

\D匹配任何不是数字的字符。上面的表达式匹配完全由非数字组成的任何字符串。

(此模式匹配“ABC”,不符合“123”或“ab2c”。)