正则表达式
/[\D\S]/
应该匹配不是数字或不是空格的字符
但是当我在regexpal中测试这个表达时
它开始匹配任何数字,空格
的字符我做错了什么?
答案 0 :(得分:6)
\D
=除数字以外的所有字符,
\S
=除了空格之外的所有字符
[\D\S]
= union (set theory)以上字符组=所有字符。
为什么呢?由于\D
包含\s
而\S
包含\d
。
如果您想匹配不是dights或空格的字符,可以使用[^\d\s]
。
答案 1 :(得分:1)
你的正则表达式自身无效。将正则表达式置于[]
内意味着它必须匹配其中的一个项目。这两个项互相覆盖,最终匹配所有内容。从理论上讲,任何非数字的东西都会匹配其他所有的字符。可用,任何非空格都匹配任何数字和任何其他字符。同样。
您可以尝试使用[^\d\s]
来表示否定任何数字或任何空格的匹配。这取代了\d
和\s
的匹配,而不是将所有内容都放在原始正则表达式中。您可以看到使用它完成的测试here。