如何只允许美国电话号码与regex验证

pod7payv  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(191)

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

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

vs3odd8k

vs3odd8k1#

我认为这将适用于您只允许**(xxx) xxx-xxxx的情况。这里,(xxx)后面的空格是可选的

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

解释
\(-〉匹配字符(按字面意义(区分大小写)
\d-〉匹配数字(等于[0-9])
{3}-〉量词-恰好匹配3次
\)-〉按字面(区分大小写)匹配字符
[ ]?-〉匹配0到1之间的空间,尽可能多地匹配,根据需要返回(贪婪)
\d-〉匹配数字(等于[0-9])
{3}-〉量词-恰好匹配3次
[-]?-〉匹配零到一次之间的破折号,尽可能多地匹配,根据需要返回(贪婪)
\d-〉匹配数字(等于[0-9])
{4}-〉量词-正好匹配4次
参见演示:https://regex101.com/r/Ws3c1t/1

相关问题