如何对字符串进行正则表达式
How to Regex a string
是否可以使用正则表达式进行检查:
- 完整的字符串是数字AND
- 第一个字符是 7 或 8 那么字符串的完整长度必须是 11 OR
- 第一个字符是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}$/
"^"表示行首
“$”表示行尾
\d 表示数字
{10}表示恰好 10
[]是一组有效值
第二个问题取决于您的引擎是否支持 Lookahead 和 Lookbehind https://www.regular-expressions.info/conditional.html
你可以使用
^(?:[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 位)
$
- 字符串结尾。
是否可以使用正则表达式进行检查:
- 完整的字符串是数字AND
- 第一个字符是 7 或 8 那么字符串的完整长度必须是 11 OR
- 第一个字符是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}$/
"^"表示行首 “$”表示行尾 \d 表示数字 {10}表示恰好 10 []是一组有效值
第二个问题取决于您的引擎是否支持 Lookahead 和 Lookbehind https://www.regular-expressions.info/conditional.html
你可以使用
^(?:[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 位)
$
- 字符串结尾。