是否可以使用正则表达式检查:
- 完整的字符串是数字AND
- 第一个字符是 7 或 8 那么字符串的完整长度必须是 11OR
- 第一个字符是 1 那么字符串的完整长度必须是 10
-
OR第一个字符是 0 然后是字符串的完整长度
必须是 18 AND 字符 8 必须是 8 或 7 OR 字符 9
必须是 1
我希望你能明白我的意思。希望这些例子能帮助您理解我的意思。
这是我的解决方案(不完全工作->我不知道如何检查它是否以 0 开头并且长度为 18 个字符,位置 8 上的字符必须是 7 或 8 或位置 9 上的字符必须是 1) :
^(?:[78]\d{10}|[1-69]\d{9}|[0]/d{18})$
例如:
-
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}|1\d{9}|0\d{6}(?:[87]\d|\d1)\d{9})$
See the 正则表达式演示 https://regex101.com/r/LVqCGF/1
Details
-
^
- 字符串的开头
-
(?:[78]\d{10}|1\d{9}|0\d{6}(?:[87]\d|\d1)\d{9})
- one of the three alternatives:
-
[78]\d{10}
- 7
or 8
然后是 10 位数字(总共 11 位)
-
|
- or
-
1\d{9}
- 1
然后是 9 位数字(总共 10 位)
-
|
- or
-
0\d{6}(?:[87]\d|\d1)\d{9}
- 0
,然后 6 位数字,然后第 8 位数字等于8
or 7
和任意一位数字,或任意一位数字和第9位数字等于1
,然后再输入 9 位数字(=18 位数字)
-
$
- 字符串结尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)