正则表达式
/[\D\S]/
应该匹配不是数字或不是空格的字符
但是当我在regexpal中测试这个表达式时
它开始匹配任何数字、空格等字符
我做错了什么吗?
/[\D\S]/
应该匹配不是数字或不是空格的字符
但是当我在regexpal中测试这个表达式时
它开始匹配任何数字、空格等字符
我做错了什么吗?
\D
= 所有非数字字符,
\S
= 所有非空白字符
[\D\S]
= 上述字符集的并集 = 所有字符。
为什么?因为\D
包含\s
,\S
包含\d
。
如果你想匹配既不是数字又不是空白字符的字符,可以使用[^\d\s]
。
[]
中意味着它必须与其中一个项目匹配。这两个项目相互覆盖,最终匹配所有内容。理论上,任何非数字字符都将匹配其他任何字符,任何非空格字符也将匹配任何数字和其他字符。[^\d\s]
,它表示否定匹配任何数字或任何空格。而不是在原始正则表达式中捕获一切,这将否定\d
和\s
的匹配。你可以在 这里 进行测试。