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

Javascript JS Regex:(a | b)匹配子表达式的a或b部分。a和b切换时的不同行为,javascript,regex,Javascript,Regex,我正在尝试使用regexp概念将2%替换为“”(空)。如果输入字符串为%或2%,则应将其替换为“”(空): const str=“2%”; console.log(`2%`.replace(/^\d%$\d(?=%)/,''); console.log(`2%`.replace(/\d(?=%)| ^\d%$/,'')区别在于正则表达式首先尝试匹配的内容。左表达式优先。只有当左一个不匹配时,才尝试右一个。那么您的问题是什么?您似乎有可用的源代码。|的左侧匹配,因此被替换。到底是什么让人惊讶?@

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

const str=“2%”;
console.log(`2%`.replace(/^\d%$\d(?=%)/,'');

console.log(`2%`.replace(/\d(?=%)| ^\d%$/,'')区别在于正则表达式首先尝试匹配的内容。左表达式优先。只有当左一个不匹配时,才尝试右一个。

那么您的问题是什么?您似乎有可用的源代码。
|
的左侧匹配,因此被替换。到底是什么让人惊讶?@Pointy,它是否像短路操作员一样工作?是的,第一个匹配“赢”的选项。