【问题标题】:HTML5 allow only US phone number?HTML5 只允许美国电话号码?
【发布时间】:2017-10-17 00:26:24
【问题描述】:

我有三个不同的电话号码输入字段。每个字段应该只允许美国电话号码格式。示例如下:

(564) 332-9088 //allowed format.

用户应该只能以我上面示例中的格式输入电话号码。所以前三个数字应该在大括号() 中,然后是空格(可以忽略),然后是 3 位数字,然后是 - 破折号和最后四位数字。我已经创建了模式正则表达式,但这不需要()。用户也可以输入这种格式的电话号码336-678-8999,这是不允许的。

<form name="testFrm" id="testFrm" method="POST" action="#">
  <label for="wphone">Work Phone:</label>
  <input type="tel" name="phoneW" id="phoneW" pattern="(?:\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4}" maxlength="14" title="US based Phone Number in the format of: (123) 456-7890" placeholder="(xxx) xxx-xxxx" required />
  <span><input type="submit" name="frmSubmit" id="frmSubmit" value="Submit" /></span>
</form>

如果有人知道我如何调整我的代码以仅接受(xxx) xxx-xxxx,请告诉我,或者如果您有更好的方法来解决这个问题。谢谢。

【问题讨论】:

    标签: javascript jquery html html5-validation


    【解决方案1】:

    我认为这将适用于您允许 (xxx) xxx-xxxx 格式。这里的 space(xxx)

    之后是可选的
    \(\d{3}\)[ ]?\d{3}[-]?\d{4}
    

    解释

    \( -> 匹配字符(字面意思(区分大小写)

    \d -> 匹配一个数字(等于 [0-9])

    {3} -> 量词——精确匹配 3 次

    \)-> 匹配字符 ) 字面意思(区分大小写)

    [ ]?-> 匹配 0 到 1 次之间的空间,尽可能多次,按需回馈(贪心)

    \d -> 匹配一个数字(等于 [0-9])

    {3}-> 量词——精确匹配 3 次

    [-]?-> 匹配 0 到 1 次之间的破折号,尽可能多次,按需回馈(贪婪)

    \d-> 匹配一个数字(等于[0-9])

    {4}-> 量词——精确匹配 4 次

    查看演示:https://regex101.com/r/Ws3c1t/1

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-05-22
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多