【问题标题】:InputMask and regex for colon separated numbers in primefacesPrimefaces中冒号分隔数字的InputMask和正则表达式
【发布时间】:2017-12-22 12:34:08
【问题描述】:

我在数据表中有一个列,用户可以在其中输入以下格式的冒号分隔数字: 0:0:0:0 到 32767:65535:65535:65535

我尝试了以下 2 种方法,但它们似乎无法正常工作或看起来不错:

  <p:cellEditor>
    <f:facet name="output"><h:outputText value="#{myClass.col1}" /></f:facet>
    <f:facet name="input">
       <p:inputMask mask="9?9999:9?9999:9?9999:9?9999" maxlength="23" value="#{myClass.col1}" >
       </p:inputMask>
    </f:facet>
  </p:cellEditor>

我也试过了:

  <p:cellEditor>
    <f:facet name="output"><h:outputText value="#{myClass.col1}" /></f:facet>
    <f:facet name="input">
       <p:inputText value="#{myClass.col1}" >
          <f:validateRegex pattern="^([0-9]{0,5}[:-]){3}([0-9]{0,5})"/>
       </p:inputText>
    </f:facet>
  </p:cellEditor>

无论如何我可以结合 inputMask 和 validateRegex 使“空白”(初始)单元格看起来像“: : :”,接受的范围是 0:0:0:0 到 32767:65535:65535:65535 和输入的值也是右对齐的(即“1:23:345:4567”)

【问题讨论】:

  • 基于此,我现在有&lt;p:inputMask mask=" " maxlength="23" value="#{myClass.col1}" &gt; &lt;f:validateRegex pattern=" "/&gt; &lt;/p:inputMask&gt; "1 到 5 位:1 到 5 位:1 到 5 位:1 到 5 位"的掩码是什么? “0:0:0:0 to 32767:65535:65535:65535”的正则表达式模式是什么?
  • 在你的情况下,我会加入一个自定义验证器来处理范围。

标签: jsf


【解决方案1】:

我设法提出了以下 reqex 模式来验证 0:0:0:0 到 32767:65535:65535:65535 之间的值:

<f:validateRegex pattern="^((3276[0-7]?|327[0-5]?[0-9]?|32[0-6]?[0-9]?[0-9]?|3[01]?[0-9]?[0-9]?[0-9]?|[012]?[0-9]?[0-9]?[0-9]?[0-9]?)((\:)(6553[0-5]?|655[012]?[0-9]?|65[0-4]?[0-9]?[0-9]?|6[0-4]?[0-9]?[0-9]?[0-9]?|[0-5]?[0-9]?[0-9]?[0-9]?[0-9])){3})"/>

【讨论】:

  • 自定义验证器会更容易创建并且更容易被其他 imo 理解。但是很好用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-19
  • 2021-03-12
  • 1970-01-01
  • 2013-05-04
  • 2016-03-27
  • 2021-09-09
相关资源
最近更新 更多