我可以有 /[abcd]/
、/(ab|cd)/
和 /[^wxyz]/
。为什么不是 /(^wx|yz)/
Apparently您可以通过简单地将功能与其他功能组合在一起来实现完全相同的效果,如下所示:/(?!wx|yz)../
.
那么为什么不直接支持该功能呢?有什么根本原因吗?
最佳答案
因此,想象一下 (^wx|yz)
意味着——正如您显然想要的那样——“一个既不是 wx
也不是 yz< 的双字符序列
”。 (^vwx|yz)
是什么意思?它是否意味着“既不是 vwx
也不是 yz
的两个或三个字符的序列”?它是否意味着“要么不是vwx
且不以yz
开头的三字符序列,或一个双字符序列,即 yz
"?
字符类表示法 [...]
的强大之处——是什么让它支持范围 a-z
,是什么让它支持否定等等——是它始终匹配单个字符。一旦您取消该限制,就不再清楚这些东西意味着什么。
关于javascript - 为什么 JS Regexp 不支持 "negated alternation"或 "negated string classes",也许其他的也不支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12535113/