【问题标题】:Regular Expression with global flag is not working in Javascript带有全局标志的正则表达式在 Javascript 中不起作用
【发布时间】:2015-06-06 18:22:00
【问题描述】:

我有一个字符串

$$_### 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('$$_###','&lt;li&gt;').replace('###_$$','&lt;/li&gt;'); 工作正常,但我当然想要全局替换。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript jquery regex


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢,阿维纳什。我为此花了几个小时的时间。非常感谢。
    • 此后您无需花费数小时来解决问题,因为您找到了我们的 StackOverflow 站点 :-)..
    【解决方案2】:

    $ 是正则表达式中的特殊字符,表示行尾。根据regular_expressions,您需要在正则表达式文字中使用“\”来转义每一个。

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

    这是一个链接,您可以在其中看到它的工作情况并对其进行测试 - regex101

    【讨论】:

    • 谢谢科尔。很有帮助。
    猜你喜欢
    • 2019-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-23
    • 1970-01-01
    • 2014-11-15
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多