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
问题是,我如何计算正则表达式中只有数字的长度
解决方案
您可以使用
^(?!(?:\D*\d){12})(\+?\d{1,2})([(-]*[0-9]{3}[)-]*)([0-9](?:-?[0-9]){6,8})$
查看正则表达式演示
细节
^
- 字符串的开始(?!(?:\D*\d){12})
- 字符串中不允许超过 11 位数字(\+?\d{1,2})
- 第 1 组:一个可选的+
,然后是 1 或 2 位数字([(-]*[0-9]{3}[)-]*)
- 第 2 组:零个或多个(
或-
字符、三位数字,然后是零个或多个)
或-
字符([0-9](?:-?[0-9]){6,8})
- 第 3 组:一个数字,然后出现 6 到 8 次可选-
和一个数字$
- 字符串结束。
推荐阅读
- c# - 无法解决“未找到应用程序依赖项清单中指定的程序集”错误
- mysql - MySql 执行超时
- javascript - 开玩笑模拟 aws-sdk ReferenceError:在初始化之前无法访问
- python - 在熊猫中计算方形数据框的最有效方法
- cadence-workflow - 时间工作流程与节奏工作流程
- confluence-rest-api - 使用 Confluence API 使用 IFrame 宏创建页面
- excel - Excel 按钮打开 VBA 屏幕而不是运行代码
- c# - 如何在同一行中编写两个方法
- identityserver4 - 使用身份服务器 4 中的 CustomTokenRequestValidationContext 在令牌响应中返回用户角色
- javascript - 任何 Node.js Minifier 都支持 Javascript Null-Coalescing 运算符 (??)?