我在 Javascript 中使用以下正则表达式:
comment_body_content = comment_body_content.replace(
/(<span id="sc_start_commenttext-.*<\/span>)((.|\s)*)(<span id="sc_end_commenttext-.*<\/span>)/,
"$1$4"
);
我想在我的 HTML 代码中找到此标签 <span id="sc_start_commenttext-330"></span>
(数字总是不同的)和标签 <span id="sc_end_commenttext-330"></span>
。然后这些标签之间的文本和 HTML 代码应该被删除并返回。
替换前的示例:
Some text and code
<span id="sc_start_commenttext-330"></span>Some text and code<span id="sc_end_commenttext-330"></span>
Some Text and code
替换后的示例:
Some text and code
<span id="sc_start_commenttext-330"></span><span id="sc_end_commenttext-330"></span>
Some text and code
有时我的正则表达式可以工作,并且可以正确替换文本,有时则不能 - 是否有错误?谢谢您的帮助!
亚历克斯
最佳答案
您应该使用将开头与其相应结尾相匹配的模式,例如:
/(<span id="sc_start_commenttext-(\d+)"><\/span>)[^]*?(<span id="sc_end_commenttext-\2"><\/span>)/
这里结束标签中的\2
指的是(\d+)
的匹配字符串,它与开始标签中的数字330
相匹配。 [^]
是任何字符的简单表达式。
关于javascript - 正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13789105/