phone 的正则表达式和 JQuery 中的匹配
Regexp for phone and Match in JQuery
我想为 jQuery 中的 phone 个数字创建一个正则表达式。我的代码:
var name_regexp = /\(\+?([0-9]{2})\)?([ .-]?)([0-9]{3})([0-9]{3})([0-9]{1,3})/;
if (($phone).match(name_regexp))
/*do sth */
我使用这个表达式是因为我想支持这样的事情 (+11)111111111,但我正在努力支持:
- 555333222
- 555 333 222
- (11)555333222
- (11)555 333 222
- (+11)555333222
但是,当我将表达式更改为
var name_regexp = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})([0-9]{4})/;
我没有匹配到。
要匹配您提供的数字,您需要在括号内的区号之后实际匹配一个或零个 space、点或连字符,并且只捕获和反向引用前 3 个分隔符位数:
/^(?:\(\+?[0-9]{2}\))?[ .-]?[0-9]{3}([ .-]?)[0-9]{3}[0-9]{1,3}$/
^^^^^^ ^^^^^^^^ ^
参见regex demo。
你还需要允许一个可选的 +
以 \+?
开始,括号内有 2 位数字,并且整个前缀应该是可选的(=放在可选组中 (?:...)?
).
图案详情:
^
- 字符串开头
(?:\(\+?[0-9]{2}\))?
- 出现 1 次或 0 次:
\(
- 一个 (
\+?
- 一或零 +
[0-9]{2}
- 2 位数
\)
- 收盘 )
[ .-]?
- 1 或 0 space、点或连字符
[0-9]{3}
- 3 位数
([ .-]?)
- 第 1 组捕获分隔符(space、点或连字符)
[0-9]{3}
- 3 位数
</code> - 捕获到第 1 组的相同分隔符</li>
<li><code>[0-9]{1,3}
- 1 到 3 位数
$
- 字符串结尾。
我想为 jQuery 中的 phone 个数字创建一个正则表达式。我的代码:
var name_regexp = /\(\+?([0-9]{2})\)?([ .-]?)([0-9]{3})([0-9]{3})([0-9]{1,3})/;
if (($phone).match(name_regexp))
/*do sth */
我使用这个表达式是因为我想支持这样的事情 (+11)111111111,但我正在努力支持:
- 555333222
- 555 333 222
- (11)555333222
- (11)555 333 222
- (+11)555333222
但是,当我将表达式更改为
var name_regexp = /\(?([0-9]{3})\)?([ .-]?)([0-9]{3})([0-9]{4})/;
我没有匹配到。
要匹配您提供的数字,您需要在括号内的区号之后实际匹配一个或零个 space、点或连字符,并且只捕获和反向引用前 3 个分隔符位数:
/^(?:\(\+?[0-9]{2}\))?[ .-]?[0-9]{3}([ .-]?)[0-9]{3}[0-9]{1,3}$/
^^^^^^ ^^^^^^^^ ^
参见regex demo。
你还需要允许一个可选的 +
以 \+?
开始,括号内有 2 位数字,并且整个前缀应该是可选的(=放在可选组中 (?:...)?
).
图案详情:
^
- 字符串开头(?:\(\+?[0-9]{2}\))?
- 出现 1 次或 0 次:\(
- 一个(
\+?
- 一或零+
[0-9]{2}
- 2 位数\)
- 收盘)
[ .-]?
- 1 或 0 space、点或连字符[0-9]{3}
- 3 位数([ .-]?)
- 第 1 组捕获分隔符(space、点或连字符)[0-9]{3}
- 3 位数</code> - 捕获到第 1 组的相同分隔符</li> <li><code>[0-9]{1,3}
- 1 到 3 位数$
- 字符串结尾。