正则表达式以 79 开头,长度为 9
Regex starts with 79 and have length of 9
大家好,
我是正则表达式的新手,正在尝试在 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个附加号码
使用前瞻断言
^(?=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
占用的 2 个字符。
应该是
^79\d{7}$
这意味着 "starting with 79, with 7 more digits following it"。总共正好有 9 个字符。
你的第二个正则表达式不起作用,因为 -
并不意味着 "or"。 |
表示 "or".
^(79|78)\d{8}$
同样,出于同样的原因,它应该是 \d{8}
而不是 \d{10}
。
大家好, 我是正则表达式的新手,正在尝试在 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个附加号码
使用前瞻断言
^(?=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
占用的 2 个字符。
应该是
^79\d{7}$
这意味着 "starting with 79, with 7 more digits following it"。总共正好有 9 个字符。
你的第二个正则表达式不起作用,因为 -
并不意味着 "or"。 |
表示 "or".
^(79|78)\d{8}$
同样,出于同样的原因,它应该是 \d{8}
而不是 \d{10}
。