Javascript 帮助使用Regexp
给定测试字符串:Javascript 帮助使用Regexp,javascript,regex,Javascript,Regex,给定测试字符串: <div class="comment-quoter">Comment by <strong>Tom</strong> 我已经知道了,但没有匹配项: PostTxt = PostTxt.replace(new RegExp("<div class=\"comment-quoter\">Comment by <strong>{(.+),}</strong>", "g"), '[quote=$1]') Po
<div class="comment-quoter">Comment by <strong>Tom</strong>
我已经知道了,但没有匹配项:
PostTxt = PostTxt.replace(new RegExp("<div class=\"comment-quoter\">Comment by <strong>{(.+),}</strong>", "g"), '[quote=$1]')
PostTxt=PostTxt.replace(新的RegExp(“Comment by{(.+),},“g”),“[quote=$1]”)
试试:
PostTxt=PostTxt.replace(新的RegExp(“Comment by(.+),“g”),“[quote=$1]”)
圆括号表示$1
捕获组,因此花括号和逗号将匹配文本,不需要
根据您的期望,您可以通过更具体地说明要为捕获组匹配的角色来减少贪婪:
(\w+)
将匹配一个或多个字母数字字符,如果输入字符串中有多个引号,则将返回正确的匹配项。请尝试:
PostTxt = PostTxt.replace(/<div class="comment-quoter">Comment by <strong>(.+?)<\/strong>/g, '[quote=$1]')
PostTxt=PostTxt.replace(新的RegExp(“Comment by(.+),“g”),“[quote=$1]”)
圆括号表示$1
捕获组,因此花括号和逗号将匹配文本,不需要
根据您的期望,您可以通过更具体地说明要为捕获组匹配的角色来减少贪婪:
(\w+)
将匹配一个或多个字母数字字符,如果输入字符串中有多个引号,则将返回正确的匹配项。PostTxt=PostTxt.replace(/Comment by(.+?)/g,“[quote=$1]”)
PostTxt = PostTxt.replace(/<div class="comment-quoter">Comment by <strong>(.+?)<\/strong>/g, '[quote=$1]')
PostTxt=PostTxt.replace(/Comment by(.+?)/g,“[quote=$1]”)
如果您希望这样做而不需要显式创建新的RegExp对象(因为您没有存储它),只需执行以下操作:
PostTxt = PostTxt.replace(/<div class="comment-quoter">Comment by <strong>(.+)<\/strong>/g, '[quote=$1]');
替换(/Comment by(.+)/g,“[quote=$1]”);
如果您希望这样做而不需要显式创建新的RegExp对象(因为您没有存储它),只需执行以下操作:
PostTxt = PostTxt.replace(/<div class="comment-quoter">Comment by <strong>(.+)<\/strong>/g, '[quote=$1]');
替换(/Comment by(.+)/g,“[quote=$1]”);
这两者都不匹配,请记住正则表达式是贪婪的。你的话吃得太多了,当PostTxt
包含多个引号时就会失败。@Tom Gullen:好东西!我开始怀疑我的理智D@Jason谢谢,系统保证不会有嵌套的引号。@Jason McCreary:我添加了一个更新来表示这个事实,干杯。这两个都不匹配,抱歉,记住正则表达式是贪婪的。你的话吃得太多了,当PostTxt
包含多个引号时就会失败。@Tom Gullen:好东西!我开始怀疑我的理智D@Jason谢谢,系统保证不会有嵌套的引号。@Jason McCreary:我添加了一个更新来表示这一事实,干杯。不确定是否建议以这种方式进行;这是完全不灵活的。想象一下,如果由于其他javascript代码而导致标记发生变化,或者额外的空格会使正则表达式失效,等等@Davin,它是评论系统的一部分,这很棘手,因为人们输入[quote]rgrg[/quote]
,提交它,它被解析为HTML,然后,当我编辑评论时,我需要将其反转以原始格式显示。不确定是否建议以这种方式显示;这是完全不灵活的。想象一下,如果由于其他javascript代码而导致标记发生变化,或者额外的空格会使正则表达式失效,等等@Davin,它是评论系统的一部分,这很棘手,因为人们输入[quote]rgrg[/quote]
,提交它,它被解析为HTML,然后,当我编辑评论时,我需要将其反转以原始格式显示。