此问题在此处已有答案:
Is there a RegExp.escape function in JavaScript?(19个答案)
3天前关闭。
我是编码新手,有一个函数可以用另一个字符串替换子字符串,并使用下面的正则表达式来查找子字符串:
regex = new RegExp(substring, "g");
// ...
return fullString.replace(regex, function (match, index) {
if (some condition) {
// Return the original match without replacing
return match;
} else {
// Return the replaceString
return replaceString;
}
} );
字符串
该函数适用于所有子字符串,除了任何具有()
的下标。示例:
适用于:
hello hi
hi
bye
型
不适用于:
hello (hi)
型
如何解决这个问题?请建议正确的正则表达式,但不要建议使用其他方法。我不能对代码进行大量修改。
尝试了以下正则表达式模式,但它不工作:
regex = new RegExp(`\\b${substring}(?:[^)]+\\b|\\(([^)]+)\\b)`, 'g');
型
1条答案
按热度按时间4dc9hkyq1#
要使用正则表达式模式正确匹配包含圆括号
( )
的子字符串,您需要对圆括号进行转义,因为它们是正则表达式语法中的特殊字符。这是因为圆括号用于在正则表达式中定义组。以下是如何修改RegExp构造来处理此问题:下面是一个例子:
字符串
此函数转义
substring
中的特殊正则表达式字符(包括括号),然后使用此转义的substring
创建一个正则表达式,用于在fullString
中进行匹配和替换。该函数根据给定条件将substring
替换为replaceString
。