捕获数字并忽略一个字符

时间:2015-10-13 17:03:57

标签: regex

我的文件包含以下行:

528627266255,ANY VALUE,ANY VALUE,812323432-1
736353553,ANY OTHER VALUE,9123234321

我需要捕获以10或9开头的数字,如果找到则忽略“ - ”字符。

我尝试使用'[8-9]?[8-9]\d{8}-\d'正则表达式并在数字为“ - ”时正常工作,但在不包含此减号时则不行。

我的问题是,如何使用或不使用减号来捕获这两个案例?

3 个答案:

答案 0 :(得分:1)

这是一个有效的regex,显示与您的测试数据的以下正则表达式的多个匹配项:

[8-9]?[8-9]\d{8}-?\d

如果您不希望开头的数字也匹配,那么

\b[8-9]?[8-9]\d{8}-?\d

here

答案 1 :(得分:0)

这似乎就是你说的。

 # [89](?:-?\d){9}

 [89]                  # Starts with 8 or 9
 (?: -? \d ){9}        # Nine more digits, ignore minus sign

答案 2 :(得分:0)

您还可以使用以下正则表达式:

\b([8-9]{1}[0-9-]{9,10})\b