2015-12-21 19 views
0

我有创建输入型文本宏ctrls.textInput,我想补充一点,将有引号的正则表达式模式属性,但它打破我的模板,如何添加报价到FreeMarker的属性里面的正则表达式

我已经尝试:

<@ctrls.textInput pattern="[^\\x22'<>]+" required=true maxlength=50 /> 

\\x22被换成了引号内的HTML,它打破我的HTML,有没有办法添加引号为图案的属性?

我也试过\\\\x22但我最终以\\x22属性。

+0

你试过用html实体吗?或者用'\\ u0022' –

+0

@CasimiretHippolyte html entitiy工作,你可以添加这个作为答案。 – jcubic

回答

1

该语法似乎在某些方面遵循XML。为了搞清XML中的字符与它的代码点,你可以使用HTML实体:

&#34; 
&#x22; 

或许:

&quot; 
+0

FreeMarker不会在字符串文字中解决'&...;'-s。它的表达式语法与JavaScript相似,而不是HTML。 – ddekany

0

你的意思是它打破了你的HTML?你是否将正则表达式本身插入到HTML中?在这种情况下,无论何时将非HTML代码插入到HTLM中,都需要进行escsaped,如${someValue?html}

此外,您不应该双引号内的双引号,因为"未在正则表达式中保留。所以它应该只是pattern="[^\"'<>]+"