首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在JS Regexp中不支持"negated alternation“或"negated string classes”,也许其他的也不支持?

为什么在JS Regexp中不支持"negated alternation“或"negated string classes”,也许其他的也不支持?
EN

Stack Overflow用户
提问于 2012-09-22 01:14:25
回答 2查看 41关注 0票数 1

我可以使用/[abcd]//(ab|cd)//[^wxyz]/。为什么不使用/(^wx|yz)/

通过简单地将其他特性的功能组合在一起,你可以达到完全相同的效果,比如:/(?!wx|yz)../

那么为什么不直接支持这个特性呢?有没有潜在的原因?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-22 01:29:52

因此,想象一下(^wx|yz)意味着--正如您显然想要的--“既不是wx也不是yz的两个字符的序列”。(^vwx|yz)是什么意思?它是否意味着“既不是vwx也不是yz的由两个或三个字符组成的序列”?它是否意味着“一个不是vwx且不以yz开头的三个字符的序列,或者是一个两个字符的yz序列”?

字符类表示法[...]的强大之处在于它总是匹配单个字符,这让它支持范围a-z,支持否定,等等。一旦你取消了这个限制,就不再清楚这些东西意味着什么。

票数 2
EN

Stack Overflow用户

发布于 2012-09-22 01:28:26

您期望/(^wx|yz)/的行为是什么?在我看来,一个空字符串似乎可以满足您提出的“否定替换”。如果您希望它尝试匹配相同数量的字符,那么使用可变长度正则表达式的否定替换怎么办?

我在这里想要得到的是,一个被否定的交替是很难实现的,而且最明显的方法就是作为一个零宽度的断言,所以你可以使用(?!...)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12535113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档