正则表达式
/[\D\S]/
应该匹配不是数字或不是空格的字符
但是当我在正则表达式中测试这个表达式时
它开始匹配任何数字、空格字符
我做错了什么?
\D
= 除数字外的
\S
所有字符,= 除空格外的所有字符
[\D\S]
=上述字符组的联合(集合论) =所有字符。
为什么?因为\D
contains\s
和\S
contains \d
。
如果要匹配既不是空格也不是空格的字符,可以使用[^\d\s]
.
您的正则表达式正在使自己失效。将正则表达式放在其中[]
意味着它必须匹配其中的一项。这两个项目相互覆盖,最终匹配所有内容。理论上,任何非数字的东西都会匹配其他所有字符。可用,并且任何非空格匹配任何数字和任何其他字符。也是。
您可以尝试使用[^\d\s]
which say 来否定任何数字或任何空格的匹配。这不是将所有内容都包含在原始正则表达式中,而是否定了\d
和的匹配\s
。您可以在此处查看使用它完成的测试。