2

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

  1. 完整的字符串是数字
  2. 第一个字符是 7 或 8,那么字符串的完整长度必须是 11
  3. 第一个字符是 1 那么字符串的完整长度必须是 10
  4. 或者第一个字符是 0,那么字符串的完整长度必须是 18 并且字符 8 必须是 8 或 7 或者字符 9 必须是 1

我希望你能明白我的意思。希望这些例子能帮助你明白我的意思。

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

^(?:[78]\d{10}|[1-69]\d{9}|[0]/d{18})$

例如:

  • 8 5556987456 -> 以 8 开头,长度为 11 -> 匹配
  • 7 5556987456 -> 以 7 开头,长度为 11 -> 匹配
  • 1 555698745 -> 以 1 开头,长度为 10 -> 匹配
  • 0 000000 8 5556987456 -> 以 0 开头,长度为 18,在 pos 8 上是 8 -> 匹配
  • 0 000000 7 5556987456 -> 以 0 开头,长度为 18,在 pos 8 上为 7 -> 匹配
  • 0 0000000 1 556987456 -> 以 0 开头,长度为 18,在 pos 9 上是 1 -> 匹配

谢谢!

4

2 回答 2

2

您可以使用

^(?:[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}-78然后 10 位数字(总共 11 位)
    • |- 或者
    • 1\d{9}-1然后是 9 个数字(总共 10 个)
    • |- 或者
    • 0\d{6}(?:[87]\d|\d1)\d{9}- 0,然后是 6 位数字,然后是第 8 位数字等于87和任何一位数字,或任何一位数字和第 9 位数字等于1,然后再有 9 位数字(=18 位数字)
  • $- 字符串结束。
于 2020-08-21T20:11:12.827 回答
0

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

"^" 表示行首 "$" 表示行尾 \d 表示数字 {10} 表示正好 10 [] 是一组有效值

第二个问题取决于您的引擎是否支持 Lookahead 和 Lookbehind https://www.regular-expressions.info/conditional.html

于 2020-08-06T09:49:36.690 回答