JS正则表达式:(a | b)匹配子表达式的a或b部分。 a和b切换时的行为不同

时间:2019-03-09 20:31:38

标签: javascript regex

我正在尝试使用regexp概念将 2%替换为“(空)”。如果输入字符串是 2%,则应将其替换为''(空):

const str = "2%";

console.log(`2%`.replace(/^\d%$|\d(?=%)/, ''));
console.log(`2%`.replace(/\d(?=%)|^\d%$/, ''));

(a|b) Matches the a or the b part of the subexpression.

"2%".replace(/^\d%$|\d(?=%)/, '')。效果很好。

但是,"2%".replace(/\d(?=%)|^\d%$/, '')不是。

1 个答案:

答案 0 :(得分:2)

区别在于正则表达式首先要匹配的内容。左表达式优先。仅当左边一个不匹配时,才尝试右边。