Java 正则表达式以79开头,长度为9

Java 正则表达式以79开头,长度为9,java,regex,matcher,Java,Regex,Matcher,各位好,, 我不熟悉正则表达式,并尝试在java中应用两个特定的正则表达式 1-正则表达式以79开头,仅包含数字,长度必须为9。我的解决办法是 ^(79)\\d{9}$ 但与此字符串不匹配。791234567. 2-另一个正则表达式以79或78开头,仅包含数字,长度必须为10。 我的解决方案是^(79-78)\\d{10}$ 两者都是不同的,每种情况都需要不同的正则表达式。任何帮助都会很好 \\d{9} 表示(其他)9位数字。 你需要7个(你已经用过9-2个) 第二个问题也是如此, 用这

各位好,, 我不熟悉正则表达式,并尝试在java中应用两个特定的正则表达式

1-正则表达式以79开头,仅包含数字,长度必须为9。我的解决办法是

 ^(79)\\d{9}$
但与此字符串不匹配。791234567.

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

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

\\d{9}
表示(其他)9位数字。 你需要7个(你已经用过9-2个)

第二个问题也是如此, 用这个代替

\\d{8}
表示另外8个数字

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

第二个问题也是如此, 用这个代替

\\d{8}

使用前瞻断言指示8个附加数字

^(?=79)\d{9}$
^(?=79|78)\d{10}$
否则匹配前两个字符,然后剩余7或8个字符

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

使用前瞻性断言

^(?=79)\d{9}$
^(?=79|78)\d{10}$
否则匹配前两个字符,然后剩余7或8个字符

^79\d{7}$
^7[89]\d{8}$
这里是正则表达式:
^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位数字
    • 以下是正则表达式:
      ^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位数字

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

          应该是

          ^79\d{7}$
          
          这意味着“从79开始,后面还有7个数字”。总共有9个字符

          您的第二个正则表达式不起作用,因为
          -
          不表示“或”<代码>表示“或”


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

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

          应该是

          ^79\d{7}$
          
          这意味着“从79开始,后面还有7个数字”。总共有9个字符

          您的第二个正则表达式不起作用,因为
          -
          不表示“或”<代码>表示“或”


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

          79
          已经是两位数字了。使用
          \d{7}
          而不是
          \d{9}
          …并且不需要捕获组。但是,根据您使用正则表达式的方式,您可能需要开始和结束锚定。此外,备选方案不是编写的
          79-78
          ,而是编写的
          79 | 78
          (如果您将其与其他内容组合,您可能需要一个组围绕它,但可能是一个非捕获组)。
          79
          已经是两位数字。使用
          \d{7}
          而不是
          \d{9}
          …并且不需要捕获组。但是,根据您使用正则表达式的方式,您可能需要开始和结束锚定。此外,备选方案不是由
          79-78
          编写的,而是由
          79 | 78
          编写的(如果您将其与其他内容相结合,可能需要一个组围绕它,但可能是一个非捕获组)。