给出测试字符串:
<div class="comment-quoter">Comment by <strong>Tom</strong>
我想将其更改为
[quote=Tom]
我已经达到了这个目标,但没有匹配:
PostTxt = PostTxt.replace(new RegExp("<div class=\"comment-quoter\">Comment by <strong>{(.+),}</strong>", "g"), '[quote=$1]')
答案 0 :(得分:5)
尝试:
PostTxt = PostTxt.replace(new RegExp("<div class=\"comment-quoter\">Comment by <strong>(.+)</strong>", "g"), '[quote=$1]')
圆括号表示$1
捕获组,因此大括号和逗号将与文字匹配,不是必需的。
根据您的期望,您可以通过更具体地了解您为捕获组匹配的字符来减少贪婪:
(\w+)
会匹配一个或多个字母数字字符,如果您的输入字符串中有多个引号,则会返回正确的匹配项。
答案 1 :(得分:1)
如果你想这样做而没有显式创建一个新的RegExp对象的开销(因为你还没有存储它),只需这样做:
PostTxt = PostTxt.replace(/<div class="comment-quoter">Comment by <strong>(.+)<\/strong>/g, '[quote=$1]');
答案 2 :(得分:0)
PostTxt = PostTxt.replace(/<div class="comment-quoter">Comment by <strong>(.+?)<\/strong>/g, '[quote=$1]')