带全局标志的正则表达式在Javascript中不起作用

Regular Expression with global flag is not working in Javascript

本文关键字:Javascript 不起作用 正则表达式 全局 标志      更新时间:2023-09-26

我有一个字符串

$$_### ABC ###_$$ $$_### PQR ###_$$ $$_### XYZ ###_$$

我想将$$_###替换为和li标签,###_$$替换为闭合的li标签。

所以最终输出应该是<li>ABC</li><li>PQR</li><li>XYZ</li>

我用的是这个

str = $$_### ABC ###_$$ $$_### PQR ###_$$ $$_### XYZ ###_$$;
new_str = (str.replace(/$$_###/g,'<li>')).replace(/###_$$/g,'</li>');

它似乎不工作。

new_str = (str.replace('$$_###','<li>').replace('###_$$','</li>');工作得很好,但当然我想要一个全局替换。

$是正则表达式中的一个特殊字符,表示我们位于一行的末尾。因此,您需要转义美元符号,以便匹配文字$符号。

new_str = str.replace(/'$'$_###/g,'<li>').replace(/###_'$'$/g,'</li>');

$是正则表达式中的一个特殊字符,表示行结束符。您需要在正则表达式中使用'''转义每个正则表达式。

替换只是对文本进行字面替换,因此不需要转义。

这里是一个链接,您可以看到它的工作和测试它- regex101