4

正则表达式

/[\D\S]/

应该匹配不是数字或不是空格的字符

但是当我在正则表达式中测试这个表达式时

它开始匹配任何数字、空格字符

我做错了什么?

4

2 回答 2

6

\D= 除数字外的 \S所有字符,= 除空格外的所有字符

[\D\S]=上述字符组的联合(集合论) =所有字符。

为什么?因为\Dcontains\s\Scontains \d

如果要匹配既不是空格也不是空格的字符,可以使用[^\d\s].

于 2013-05-21T14:05:36.900 回答
1

您的正则表达式正在使自己失效。将正则表达式放在其中[]意味着它必须匹配其中的一项。这两个项目相互覆盖,最终匹配所有内容。理论上,任何非数字的东西都会匹配其他所有字符。可用,并且任何非空格匹配任何数字和任何其他字符。也是。

您可以尝试使用[^\d\s]which say 来否定任何数字或任何空格的匹配。这不是将所有内容都包含在原始正则表达式中,而是否定了\d和的匹配\s。您可以在此处查看使用它完成的测试。

于 2013-05-21T14:05:21.753 回答