帮助Regexp

时间:2011-04-25 19:28:29

标签: javascript regex

给出测试字符串:

<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]')

3 个答案:

答案 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]')