regex 将正则表达式与p:keyFilter一起使用

qvtsj1bj  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(122)

我有一个p:inputMask和一个p:keyFilter来匹配HH:mm模式中的时间,如下所示:

<p:inputMask mask="99:99" ...>
     <p:keyFilter regEx="([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"/>
</p:inputMask>

但是它不起作用,它接受从00:0099:99的所有值。
我该如何解决这个问题?

wpx232ag

wpx232ag1#

# # p:keyFilterf:validateRegex 的 对比 - regExinputRegEx 的 对比

带有 regEx 属性 的 p:keyFilter 用于 过滤 字符 ( 在 每次 击 键 时 ) , 它 不 允许 您 验证 表达式 ( 在 完整 的 输入 值 上 ) 。 如果 要 验证 输入 是否 与 正则 表达式 匹配 , 请 使用 inputRegEx 属性 或 f:validateRegex
因此 , 在 您 的 情况 下 , 您 可以 使用 :

<p:inputXxx ...>
    <f:validateRegex pattern="([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]"/>
</p:inputXxx>

中 的 每 一 个
请 注意 , p:keyFilter 需要 JavaScript 正则 表达式 , 而 , 而 f:validateRegex 需要 Java 正则 表达式 。 并且 , p:keyFilter inputRegEx 在 按键 时 被 选中 , 而 f:validateRegex 在 处理 字段 时 被 执行 。 正确 的 p:keyFilter 使用 方法 是 :

<p:inputXxx ...>
    <p:keyFilter inputRegEx="/[0-9:]/"/>
</p:inputXxx>

格式
但 这 仍 将 允许 无效 输入 。
所以 , 在 简历 中 :
| 属性|p:keyFilter inputRegEx="..."| f:validateRegex pattern="..."|
| - -| - -| - -|
| 正则 表达式 类型|JavaScript 语言| java |
| 执行 时间|触发 了 键 抬起 JavaScript 事件|已 处理 组件|
这 适用 于 所有 文本 输入 组件 ( 如 p:inputText ) , 因此 不仅 适用 于 您 正在 使用 的 p:inputMask ) 。
另 请 参阅 :

第 六 次 启动 前
请 注意 , p:keyFilter 自 6.0 起 可用 。 对于 较 早 的 版本 , 您 需要 PrimeFaces Extensions pe:keyFilter 。 请 注意 , 6.0 之前 的 PFE 版本 与 PF 版本 不 一致 。
为了 完全 不同 的 东西
您 可以 简单 地 使用 p:datePicker , 它 现在 只能 用于 输入 时间 ( 小时 和 分钟 ) :

<p:datePicker pattern="HH:mm" .../>

格式
或者 你 可以 看看 pe:timePicker

相关问题