我正在使用正则表达式
[\b\s\n\r\^][1-9][0-9]{3}[ -]?[0-9]{4}[\b\s]
来自站点https://regexr.com/
但无法识别以下组中的前两个数字
1 2 3 4 5 6 7 8 1 2 3 4-5 6 7 8
它也不应该标识无效的那个。
有效
1 2 3 4 5 6 7 8 1 2 3 4-5 6 7 8 12345678 1234-1234
无效
1-18000-55113 01234567 09581300 1234567
答案 0 :(得分:1)
给出示例并查看正则表达式尝试,您可以使用此正则表达式,
^[1-9] *(?:\d *){3}(?:- *)?(?:\d *){4}$
说明:
^
-字符串的开头[1-9] *
-以1到9的数字开头,后跟可选空格。(?:\d *){3}
-后面跟有任意数字,其后是可选空格,并且整个空格三遍(?:- *)?
-匹配四位数后,可以选择在其后跟连字符-
,后跟可选空格(?:\d *){4}
-再加上四个数字,可以选择在其后跟空格$
-字符串结尾编辑: 如评论中所述,如果要在较大的文本中找到这样的字符串,可以使用以下正则表达式,
\b[1-9] *(?:\d *){3}(?:- *)?(?:\d *){3}\d\b