Java RegEx:无法找到解决方案

时间:2017-04-07 06:41:04

标签: java regex

我有一个电话号码列表,我需要使用RegEx进行过滤。

这些匹配:

61-8434 0101
61 8434 0101
(11) 8434 0101
(11) 98434 0101
(47)84340101
(47) 984340101
4340502
3321-6769
33457899
21679541
2167-9547
846415
8875465

这些应匹配:

99150 1000
67-9150-1000
67 91501000
67 991501000
(67) 991501000
(67) 99150-1000
(67) 9150-1000
(67) 9150 1000
(67) 99150 1000

我需要RegEx执行以下操作:

  1. 选择模式后面的数字:8或9位数字,可能用或不用连字符或空格分割
  2. 选择必须以8或9
  3. 开头
  4. 选择之前可以是67 /(67)/ 67- / 67(空格),但如果之前有任何其他数字变化,如:61- / 61/11 /(11)/ 47-那么它不应该是选中(在示例中,不应选择列表中的前6个数字)
  5. 我已经设法通过以下RegEx完成第1项和第2项:

    [8-9]\d{3,4}[- ]?\d{4}
    

    输出: RegEx Visual from http://www.ocpsoft.org

    但我无法弄清楚如何完成第3项!请帮忙!

1 个答案:

答案 0 :(得分:2)

不完全严格,但应该适合你:

^(\(?67\)?[ -]?)?[89]([ -]?\d){6,7}\d$

请参阅live demo