正则表达式从79开始,长度为9

时间:2018-01-08 10:48:00

标签: java regex matcher

大家好,                我是regex的新手,并试图在java中应用两个特定的正则表达式。

1 - Regex以79开头,仅包含数字,长度必须为9.我的解决方案是

 ^(79)\\d{9}$

但不匹配此字符串。 791234567.

2 - 另一个正则表达式以79或78开头,仅包含数字,长度必须为10。 我的解决方案是^(79-78)\\d{10}$

两者都不同,每种情况都需要不同的正则表达式。任何帮助都会很棒。

4 个答案:

答案 0 :(得分:4)

使用前瞻断言

^(?=79)\d{9}$
^(?=79|78)\d{10}$

否则匹配前两个字符然后剩下7或8

^79\d{7}$
^7[89]\d{8}$

regex101

答案 1 :(得分:1)

这是正则表达式:
^79\\d{7}$^7(8|9)\\d{8}$

现在解释一下:

  • “79”中有两个字符,因此79\\d{9}将匹配11个字符
  • (79-78)不是你想象的那样,它实际上只是按照这个特定的顺序捕捉字符“79-78”,你想要的是交替:(79|78)
  • 78和79共有“7”,因此(79|78)可以成为7(9|8)
  • “79”仍有2个字符,因此您之后只需要匹配8位数字

答案 2 :(得分:0)

\\d{9}

表示(另一个)9位数字。 你需要7(9 - 2你已经使用过)

第二个问题相同, 请改用

\\d{8}

表示另外8个数字

答案 3 :(得分:0)

你的正则表达式不起作用,因为你没有考虑79占据的2个字符。

应该是

^79\d{7}$

这意味着“以79开头,后面还有7位数”。总共有9个字符。

你的第二个正则表达式不起作用,因为-并不意味着“或”。 |表示“或”。

^(79|78)\d{8}$

同样,出于同样的原因,它应该是\d{8}而不是\d{10}