Regex 如何正则化字符串

Regex 如何正则化字符串,regex,regex-group,regex-alternation,Regex,Regex Group,Regex Alternation,是否可以使用正则表达式检查: 完整的字符串是数字和 第一个字符是7或8,那么字符串的完整长度必须是11或 第一个字符是1,那么字符串的完整长度必须是10 或第一个字符是0,然后是字符串的完整长度 必须是18,字符8上必须是8或7或字符9上 必须是1 我希望你能明白我的意思。希望这些例子能帮助你理解我的意思 这是我的解决方案(无法完全工作->我不知道如何检查以0开头的字符长度是否为18个字符位置8上的字符必须为7或8或位置9上的字符必须为1): 例如: 85556987456->以8开头,长度为

是否可以使用正则表达式检查:

  • 完整的字符串是数字
  • 第一个字符是7或8,那么字符串的完整长度必须是11
  • 第一个字符是1,那么字符串的完整长度必须是10
  • 第一个字符是0,然后是字符串的完整长度 必须是18,字符8上必须是8或7或字符9上 必须是1
  • 我希望你能明白我的意思。希望这些例子能帮助你理解我的意思

    这是我的解决方案(无法完全工作->我不知道如何检查以0开头的字符长度是否为18个字符位置8上的字符必须为7或8或位置9上的字符必须为1):

    例如:

    • 85556987456->以8开头,长度为11->匹配
    • 75556987456->以7开头,长度为11->匹配
    • 1555698745->以1开头,长度为10->匹配
    • 000000085556987456->以0开头,长度为18,第8位为8->匹配
    • 000000075556987456->以0开头,长度为18,第8位为7->匹配
    • 000000001556987456->以0开头,长度为18,第9位为1->匹配
    谢谢大家!

    这里是正则表达式: /^[78]\d{10}$/

    “^”表示行的开始 “$”表示行的结尾 \d表示数字 {10} 正好是10 []是一组有效值

    第二个问题取决于您的引擎是否支持前向和后向

    ^(?:[78]\d{10}|1\d{9}|0\d{6}(?:[87]\d|\d1)\d{9})$
    

    详细信息

    • ^
      -字符串的开头
    • (?:[78]\d{10}1\d{9}0\d{6}(?[87]\d}\d1)\d{9})
      -三个备选方案之一:
      • [78]\d{10}
        -
        7
        8
        然后是10位数字(总共11位)
      • |
        -或
      • 1\d{9}
        -
        1
        然后是9位数字(总共10位)
      • |
        -或
      • 0\d{6}(?[87]\d}\d1)\d{9}
        -
        0
        ,然后是6位数字,第8位数字等于
        8
        7
        和任何一位数字,或任何一位数字和第9位数字等于
        1
        ,然后是9位以上的数字(=18位)
    • $
      -字符串结束

    使用:
    ^[78][0-9]{10}$
    或:
    ^(?[78]\d{10}|[1-69]\d{9})$
    非常感谢!不幸的是,我又忘记了一个条件。我已经编辑了原始的帖子,然后试着用给出的示例展示你的最佳表现,并包括你自己的尝试。这可能会让你的问题再次被打开。我用我不完整的解决方案编辑了我的帖子。我认为你不需要到处寻找。只要换一种就行了。
    ^(?:[78]\d{10}|1\d{9}|0\d{6}(?:[87]\d|\d1)\d{9})$