HTML5只允许美国电话号码?
问题描述:
我有三个不同的电话号码输入字段。每个字段只能使用美国的电话号码格式。这里是例子: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
接受请让我知道,或者如果你有更好的方法来解决这个问题。谢谢。
答
我觉得这样会适合只有(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次