我需要验证字符串是否遵循以下规则:
基本上这些是澳大利亚的固定电话(有区号),免费电话和13个号码。
理想情况下,正则表达式应该尽可能地与实现无关。
有效输入示例:
附注:我已经检查了至少5个其他答案,并搜索了这个问题的多种变体,但没有任何效果。
离我最近的是:
^(?=\d{10}$)(02|03|04|07|08|13|18)\d+
。。。但这不考虑间距,也不接受以13开头的6位数字。
注意,理论上,以下是可以接受的:
我的意思是,第一对数字之间可能有一个空格(就像看起来那样糟糕)。
以下是应失败的随机数示例:
您可以为交替中的13
创建单独的模式:
^(?:(?=(?:\s*\d\s*){10}$)(?:0\s*[2378]|1\s*[38])|(?=(?:\s*\d\s*){6}$)1\s*3).*
演示:https://regex101.com/r/hkjus2/2