如何在BootsFaces和PrimeFaces中屏蔽非西方拉丁字符?

时间:2018-03-05 09:41:17

标签: primefaces bootsfaces

我需要使用PrimeFaces p:inputMask和BootsFaces p:inputText为某些输入字段添加输入掩码。 所需的面具应该只接受阿拉伯字母和一些数字。 我的问题是:我不知道该怎么做,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

可以使用正则表达式匹配阿拉伯字符。见Include Arabic characters in JavaScript regular expression?

BootsFaces

1.3及以上

BootsFaces 1.3及更高版本支持掩码中的正则表达式,如:

<b:inputText mask="{ regex: '[0-9\u0600-\u06FF]*' }" />

1.3之前

BootsFaces附带Inputmask by Robin Herbots。 1.3之前mask中的b:inputText属性只允许您传递掩码表达式。在掩码表达式中,您不能使用正则表达式。但是,the Inputmask library does support regular expressions。您可以通过省略mask中的b:inputText属性并使用JavaScript初始化掩码来创建变通方法:

Inputmask({ regex: "[0-9\u0600-\u06FF]*" }).mask("input[type=text]");

0-9用于匹配数字,\u0600-\u06FF用于匹配阿拉伯字符 使用.mask("..."),您可以选择应该应用蒙版的输入。

PrimeFaces

到目前为止(6.2)PrimeFaces inputMask不支持正则表达式。您可以将p:inputTextp:keyFilter一起使用:

<p:inputText>
  <p:keyFilter regEx="/[0-9\u0600-\u06FF]/"/>
</p:inputText>

请注意,PrimeFaces使用JavaScript表示法:/pattern/

其他语言

您的问题是如何匹配面具中的阿拉伯字符。当然,相同的解决方案可以应用于使用非西方拉丁字符的其他语言,例如:

  • 中国
  • 希伯来语
  • 印地文
  • Japanse
  • 韩语(韩语)
  • 俄语(西里尔语)

对于每种语言/字符集,都需要找到正确的正则表达式。