我正在尝试使用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%$/, '')
不是。
答案 0 :(得分:2)
区别在于正则表达式首先要匹配的内容。左表达式优先。仅当左边一个不匹配时,才尝试右边。