Regex 如何只计算长度正则表达式的位数
俄罗斯电话号码有11位数字,但我不能使用Regex 如何只计算长度正则表达式的位数,regex,Regex,俄罗斯电话号码有11位数字,但我不能使用a{11},因为电话号码可以包含括号和破折号 我的正则表达式:^([\+]?\d){1,2}([\(\-]*[0-9]{3}[\)\-]*)([0-9\-]{7,9})$ 国家/地区代码中的数字可以包含1到2个字符 然后是带括号或不带括号的3位数字作为电话运营商代码 然后,从7-9位开始,加上破折号或不加破折号 例如: +7(994)849-45-16 +7(994)849-4516 +7(994)84945-16 +7994849-45-16 问题是,
a{11}
,因为电话号码可以包含括号和破折号我的正则表达式:
^([\+]?\d){1,2}([\(\-]*[0-9]{3}[\)\-]*)([0-9\-]{7,9})$
国家/地区代码中的数字可以包含1到2个字符
然后是带括号或不带括号的3位数字作为电话运营商代码
然后,从7-9位开始,加上破折号或不加破折号 例如:
+7(994)849-45-16
+7(994)849-4516
+7(994)84945-16
+7994849-45-16
问题是,我如何在正则表达式中只计算数字的长度
^(?)(?:\D*\D){12})(\+?\D{1,2})([(-*[0-9]{3}[)-]*)([0-9](?:-?[0-9]){6,8})$
见
详细信息
-字符串的开头^
-字符串中不允许超过11位数字(?!(?:\D*\D){12})
-第1组:可选的(\+?\d{1,2})
,然后是1或2位数字+
-第2组:零个或多个([(-*[0-9]{3}[)-]*)
或(
字符,三位,然后再次是零个或多个-
或)
字符-
-第3组:一个数字,然后可选的([0-9](?:-?[0-9]){6,8}
和一个数字出现6到8次-
-字符串结束$
[0-9\-]{7,9}
替换为[0-9](?:-?[0-9]){6,8}
。国家/地区代码部分必须是\+?\d{1,2}
@WiktorStribiżew它最多计数14位要将总位数限制为11位,请在^
之后添加(?!(?:\d*\d){12}