gpt4 book ai didi

javascript - Ecmascript 正则表达式交替运算符(管道 |)是否确保评估顺序?

转载 作者:行者123 更新时间:2023-11-30 14:28:08 26 4
gpt4 key购买 nike

我正在使用 Javascript(第 5 版,如果重要的话),我必须在不允许使用斜杠的上下文中存储一个字符串。存储的时候我没脑子写了:

mystring.replace(/(\\)|(\/)|(@)/g, function(_,rbar,bar,at) {
if (rbar) return '@';
if (bar) return '@b';
if (at) return '@@';
} );

加载时相反:

mystring.replace(/(@@)|(@b)|(@)/g, function(_,at,bar,rbar) {
if (at) return '@';
if (bar) return '/';
if (rbar) return '\/';
} );

显然它有效。

但是,我有一个疑问。 ecmascript 正则表达式是否确保交替运算符之间的匹配按顺序进行测试?因此,例如,第二次调用将永远不会在 '@@' 的输入上返回 '\/\/'?

最佳答案

是的,顺序很重要。

Ecmascript

The | regular expression operator separates two alternatives. The pattern first tries to match the left Alternative (followed by the sequel of the regular expression); if it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression).

MDN使用更简单的措辞:

x|y Matches 'x', or 'y' (if there is no match for 'x').

关于javascript - Ecmascript 正则表达式交替运算符(管道 |)是否确保评估顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51630325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com