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