javascript - 为什么 JS Regexp 不支持 "negated alternation"或 "negated string classes",也许其他的也不支持?

标签 javascript regex

我可以有 /[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/

相关文章:

javascript - jQuery ajax 调用 mvc Action 不会触发成功/错误

php - 解析css并创建类名和背景图片的键值数组

javascript - 为什么 String.match(/\d*/) 返回一个空字符串?

php - 当两者都被触发时,正则表达式多重前瞻不起作用

任何可见的 unicode 字母字符的 JavaScript 正则表达式模式

javascript - 在提交表单之前验证输入字段

Javascript:使用预先存在的对象值作为新对象的键

javascript - 如何使用javascript分离方程式中的数字和特殊字符?

javascript - 跨浏览器刷新在 JavaScript 对象中保留值

适用于所有语言的特殊字符的 Java 正则表达式