Webstorm JavaScript正则表达式 - 正则表达式中的单个字符交替

6
我尝试根据两个分隔符来拆分字符串,就像这样:
"some-str_to_split".split(/-|_/)

因此,它应该根据“ - ”和“ _ ”来拆分字符串。它能正常工作,但Webstorm会给出一个警告:
单个字符在正则表达式中的替换

1
那又怎样,这不是一个错误。当然,[-_] 是一个更好的模式。两者都可以。 - Wiktor Stribiżew
什么问题? - Edwin
这个问题是这种方法是否存在问题。 - Shota
没有什么问题,只是比字符类解决方案效率低一些。 - Wiktor Stribiżew
那么它会变慢吗? - Shota
显示剩余2条评论
1个回答

16
请注意,-|_是一个模式,可以匹配-_,但每次正则表达式引擎在字符串中遇到一个位置时,首先测试-,如果不匹配,则尝试_。这涉及所谓的回溯。当您使用[-_]时,即所谓的字符类,正则表达式引擎使用编译的小程序执行搜索,从而更快地消除回溯机制。

因此,警告只是给您的提示,您的模式可以被改进。如果有2个字符,性能差异可以忽略不计,如果有100多个备选项,差异将更加明显。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接