正则表达式正好匹配N号

时间:2019-05-09 04:23:21

标签: c# .net regex model-view-controller

我正在使用正则表达式

[\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

1 个答案:

答案 0 :(得分:1)

给出示例并查看正则表达式尝试,您可以使用此正则表达式,

^[1-9] *(?:\d *){3}(?:- *)?(?:\d *){4}$

说明:

  • ^-字符串的开头
  • [1-9] *-以1到9的数字开头,后跟可选空格。
  • (?:\d *){3}-后面跟有任意数字,其后是可选空格,并且整个空格三遍
  • (?:- *)?-匹配四位数后,可以选择在其后跟连字符-,后跟可选空格
  • (?:\d *){4}-再加上四个数字,可以选择在其后跟空格
  • $-字符串结尾

Regex Demo 1

Working demo in regexr

编辑: 如评论中所述,如果要在较大的文本中找到这样的字符串,可以使用以下正则表达式,

\b[1-9] *(?:\d *){3}(?:- *)?(?:\d *){3}\d\b

Regex Demo 2