2017-10-16 165 views
-1

我有三个不同的电话号码输入字段。每个字段只能使用美国的电话号码格式。这里是例子:HTML5只允许美国电话号码?

(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接受请让我知道,或者如果你有更好的方法来解决这个问题。谢谢。

回答

1

我觉得这样会适合只有(xxx) xxx-xxxx格式。这里空间是可选的(xxx)

\(\d{3}\)[ ]?\d{3}[-]?\d{4} 

说明后

\( - >一数字(等于[0-9匹配 - >

\d字符(字面(区分大小写)匹配])

{3} - >量词 - 完全匹配3次

\) - >的字符匹配)从字面上(区分大小写)

[ ]? - >匹配的次数尽可能零周一时间之间的空间,根据需要(贪婪)

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

{3} - >量词 - 精确匹配的3倍

[-]? - >零个一次,多次之间匹配破折号越好, >一个数字匹配(等于[0-9])

{4} - - >量词 - 根据需要(贪婪)

\d回馈精确匹配4次

见演示:https://regex101.com/r/Ws3c1t/1