jQuery解析花括号中的文本

4

我想要移除:

  • 包含花括号的整段文本
  • 外部花括号,但不包括 [[ 和 ]] 内的文本

[[必须保留这段文字]] 这 {{ 删除这段垃圾 }} 和这段。

我已经实现了上述内容,并在此处进行操作:http://jsfiddle.net/DMGdG/ 我使用了此文件:https://raw.github.com/cowboy/jquery-replacetext/master/jquery.ba-replacetext.min.js

但是在我的服务器(127.0.0.1)上,同样的代码无法完成操作,我尝试过两种方法:

str.replace(regex, charecter)

以及在jsfiddle中提到的那个。

我的问题:

  • 如果不正确,请建议我正则表达式组合的正确性。
  • 请不要认为它只是一个main.js所以不会有服务器错误。


jstr.replace("/\s*\{{.*?\}}\s*/g", " "); // for removing curly braces and text within.

jstr.replace("/[\[(.)\]]/g", ""); // to replace the square braces.

index.html只有一个<p>示例文本(如上所示)</p>


当文本如下 [[必须保留这段文字]]] 这个 {{{ 去掉这些垃圾 }}} 和 这个. 或者 这个 {{ 去掉这个 [[必须保留这段文字]] 垃圾}} 和这个. 会发生什么? - user557597
不包括测试用例中的内容。 - Ram Kumar
2个回答

1

不要这样写:

$("p").replaceText(/\{\{.+\}\}/U/gi, '****' );

试试这个:

$("p").replaceText(/\{\{.+?\}\}/gi, '****' );

在匹配模式后面加上问号会使得匹配变为非贪婪模式 -- 也就是说,它会匹配下一个遇到的 }},而不是最后一个。

编辑:您已经说明这对您不起作用。也许省略replaceText插件,改用普通的replace()会有所帮助:

$("p").each( function(){
    $(this).text( $(this).text().replace(/\{\{.+?\}\}/gi, '****' ) );
});

再次编辑后,似乎在您的fiddle中可以正常工作。也许问题出在插件上。


它可能无法正常工作,因为我在JScript字符串对象中发送的文本大约有7000个单词。请告诉我您对使用上述方法处理如此长的字符串的想法。 - Ram Kumar
@Rahul,上面的建议对我来说确实有效(至少在我将段落扩展到7000个单词时)。不过,如果你有非常大的数据集需要处理,也许你应该考虑在服务器端进行更多的工作。 - Ken Redler

0

这个可以正常工作:

$(function()
{
    $("p").replaceText(/\{\{.*?\}\}/gi, '' ); //removes {{...}}
    $("p").replaceText(/\[\[(.*?)\]\]/gi, '$1' ); //removes [[ and ]] around text
}); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接