freemarker替换&和&

时间:2018-07-18 13:48:02

标签: javascript html regex freemarker

我对Freemarker有问题。 我想从这句话中删除所有特殊字符,并在将来删除一些类似的句子:

  

BLA BLA RANDOM&,RANDOM BLA

特别是&,但是平台也使用HTML,因此使用以下代码:

> <#assign text1 = name?replace("[^a-zA-Z0-9. ]", "",'r')>
>${text1}

我得到:

  

BLA BLA RANMP AMP RANDOM BLA

我也在尝试类似的操作,它删除了&amp,但我还如何添加一些特殊的内容,如!@#$%^ 90,以防万一,在其中?

> <#assign text1 = name?replace('&amp;,', '')>

1 个答案:

答案 0 :(得分:0)

我不确定您需要过滤掉哪些字符或字符序列,但是根据您已有的内容,也许是这样:

${s?replace('&[a-zA-Z]+;', '', 'r')?replace('[^a-zA-Z0-9. ]', '', 'r')}

因此,这首先删除了&amp;之类的东西,然后仅保留了“安全”字符。

但是,至少在原则上,这是不完整的,因为HTML可以包含类似&#65;之类的内容,这仅表示A,因此不应删除它,而应将其替换为{{1} } ...或者,它可能包含A之类的标签,然后应将其转换为<b>foo</b>,而不是foo。不知道是否需要处理这些事情,但是如果是这样,则需要将字符串转换为纯文本,这不是一件小事,而FreeMarker对此没有内置的内容。