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

时间:2015-06-06 09:47:37

标签: javascript jquery regex

我有一个字符串

$$_### 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>');工作正常,但当然我想要全球替代。

任何帮助都将深受赞赏。

2 个答案:

答案 0 :(得分:4)

$是正则表达式中的一个特殊字符,它断言我们处于一行的末尾。因此,您需要按顺序转义美元符号以匹配文字$符号。

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

答案 1 :(得分:0)

$是正则表达式中的特殊字符,意思是行尾。你需要用一个&#39; \&#39;在每个regular_expressions的正则表达式文字中。

替换只是文本替换文本,因此不需要转义。

这是一个链接,您可以在其中看到它正常运行并进行测试 - regex101