我有创建输入型文本宏ctrls.textInput,我想补充一点,将有引号的正则表达式模式属性,但它打破我的模板,如何添加报价到FreeMarker的属性里面的正则表达式
我已经尝试:
<@ctrls.textInput pattern="[^\\x22'<>]+" required=true maxlength=50 />
但\\x22
被换成了引号内的HTML,它打破我的HTML,有没有办法添加引号为图案的属性?
我也试过\\\\x22
但我最终以\\x22
属性。
我有创建输入型文本宏ctrls.textInput,我想补充一点,将有引号的正则表达式模式属性,但它打破我的模板,如何添加报价到FreeMarker的属性里面的正则表达式
我已经尝试:
<@ctrls.textInput pattern="[^\\x22'<>]+" required=true maxlength=50 />
但\\x22
被换成了引号内的HTML,它打破我的HTML,有没有办法添加引号为图案的属性?
我也试过\\\\x22
但我最终以\\x22
属性。
该语法似乎在某些方面遵循XML。为了搞清XML中的字符与它的代码点,你可以使用HTML实体:
"
"
或许:
"
FreeMarker不会在字符串文字中解决'&...;'-s。它的表达式语法与JavaScript相似,而不是HTML。 – ddekany
你的意思是它打破了你的HTML?你是否将正则表达式本身插入到HTML中?在这种情况下,无论何时将非HTML代码插入到HTLM中,都需要进行escsaped,如${someValue?html}
。
此外,您不应该双引号内的双引号,因为"
未在正则表达式中保留。所以它应该只是pattern="[^\"'<>]+"
。
你试过用html实体吗?或者用'\\ u0022' –
@CasimiretHippolyte html entitiy工作,你可以添加这个作为答案。 – jcubic