Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 帮助使用Regexp_Javascript_Regex - Fatal编程技术网

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,然后,当我编辑评论时,我需要将其反转以原始格式显示。