匹配数字与中间的可选分隔符

时间:2017-10-18 08:21:22

标签: regex

所以我得到了这个正则表达式代码/[0-3][0-9][0-1][1-9]\d{2}[-\s]\d{4}?[^0-9]*|[0-3][0-9][0-1][1-9]\d{2}\d{4}/

这个正则表达式代码采用了这种数字:

1002821187
100282 1187
100282-1187

但我发现我不想要这些数字:1002821187

所以可以制作只能找到的1个正则表达式代码:

100282 1187
100282-1187

2 个答案:

答案 0 :(得分:1)

您的正则表达式包含一个与包含和不包含空格或-的数字匹配的替换。你需要这个空格或连字符:

^[0-3][0-9][0-1][1-9][0-9]{2}[-\s][0-9]{4}$
                             ^^^^^ 

请参阅regex demo。如果您不需要检查任何边界,请删除使模式与整个字符串匹配的^$个锚点,并使用[0-3][0-9][0-1][1-9][0-9]{2}[-\s][0-9]{4}。或者使用单词边界来查找整个单词\b[0-3][0-9][0-1][1-9][0-9]{2}[-\s][0-9]{4}\b

<强>详情

  • ^ - 字符串开头
  • [0-3] - 从03
  • 的数字
  • [0-9] - 任意数字
  • [0-1](= [01]) - 01
  • [1-9] - 0
  • 以外的任何数字
  • [0-9]{2} - 2位数
  • [-\s] - -或空白
  • [0-9]{4} - 4位数
  • $ - 字符串结束。

答案 1 :(得分:-1)

虽然您没有准确说明您要执行的操作,但您可以尝试以下正则表达式:

\b\d{6}-\d{4}\b|\b\d{4}\b|\b\d{6}\b

希望它有所帮助。