【问题标题】:primefaces keyfilter regular expressionprimefaces keyfilter 正则表达式
【发布时间】:2013-02-12 15:16:23
【问题描述】:

我遇到了关于 primefaces 扩展中的 keyfilter 的问题。 我想为一个时间段定义一个正则表达式,例如“P1Y3M2W1d”。 使用以下键过滤器的正则表达式:

<pe:keyFilter regEx="/P[0-9]*Y*[0-9]*M*[0-9]*W*[0-9]*d*/" />

目标是用户只能先输入 P,然后输入数字 0-9,然后是 Y(年)、M(月)或 W(周)等等。问题是我只能输入大写字母 P 而不能输入其他内容。我检查正则表达式。它是正确的。 keyFilter 中的正则表达式有什么问题? 谢谢帮忙!!!

更新:

<p:inputText value="#{cc.attrs.value}" id="period" >
   <pe:keyFilter regEx="/P([0-9]+Y)?([0-9]+M)?([0-9]+W)?([0-9]+d)?/" />
</p:inputText>

我认为 primefaces 扩展使用 jquery keyfilter 插件。正则表达式应该在“//”周围引用,但不知何故,我的 UI 中唯一的可能性是大写 P

【问题讨论】:

  • P 之后可以接受什么?是否必须提供其他部分(Y、M、W、d)或者它们是可选的?您当前的正则表达式肯定会接受输入字符串 P,因为您在所有其他部分都使用了 * 量词。
  • P后面可接受的数字是0-9等数字。其他部分 (Y,M,W,d) 是可选的,但您需要输入至少一个字符,例如 P3Y 或 P3M。

标签: regex primefaces keyfilter


【解决方案1】:

试试

regEx="/P([0-9]+Y)?([0-9]+M)?([0-9]+W)?([0-9]+d)?/"

【讨论】:

  • 该正则表达式是正确的,但不知何故不适用于密钥过滤器。我只能输入大写的P
  • @user1063808 你说你只能输入P是什么意思?当你输入下一个字符时会发生什么?这个过滤器是交互式的还是静态的?
  • 是的,在 UI 中,我只能输入大写的 P,其他 Char 是禁止的。奇怪!!!
  • @user1063808 因此,基于此,您得出结论,过滤器负责阻止您的输入?运行一个简单的测试,将过滤器更改为 "/.*/",它应该接受任何字符串。如果您在第一个字符之后仍然被阻止,则问题出在其他地方。
  • 对不起,我试试 /.*/。它不会阻止任何字符,但问题是我想定义第一个字符是大写 P。
猜你喜欢
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多