gpt4 book ai didi

用于英国电话号码和电话代码的 Java 正则表达式

转载 作者:行者123 更新时间:2023-11-30 06:59:22 27 4
gpt4 key购买 nike

我查看了一些较旧的帖子,但无法真正找到我的案例的答案。

我有一个正则表达式

"(?:(?:(?:\+|00)44[\s\-\.]?)?(?:(?:\(?0\)?)[\s\-\.]?)?(?:\d[\s\-\.]?){10})" 

匹配下面的模式

+44 1642 468 592
+44-(0)207-54-60-022
(0)201 234 5678
0207 1345 678
01642.85.08.50

但不是

(017683) 927 43

(0207) 1345-678

(0207) 1345 678

我确实找到了适用于模式 (017683) 927 43 的正则表达式,但我想知道是否可以简化此正则表达式以匹配括号之间有 4、5 或 6 位数字的电话号码?

对于模式:(017683) 927 43

^\(0[0-9]{5}\) [0-9]{5}$|^\(01[0-9]{3}\) [0-9]{6}$|^\(01[0-9]1\)? [0-9]{3}? [0-9]{4}$

最佳答案

我会说,在这种情况下你不应该依赖正则表达式模式。

基本上,您应该知道您将要接受的数字标准,这将告诉您您希望从用户输入中消耗多少 0-9 位数字。超过或低于的所有内容都将被丢弃,并通知用户“请输入有效数字”。

要获取数字的数量,您需要获取用户输入并从中删除所有非数字字符。这将标准化用户输入的任何内容:

+44123 456 789
+44-123-456-789
4412345 6789
44 123-456-789

等..

甚至

+44 123-----456----789

到同一个字符串 44123456789

完成后,如果字符串的长度符合国际标准,我们可以开始按位置将其分解为国家代码、城市并分析是否存在有效的国家、城市等...

当你使用正则表达式时,你实际上描述了你同意在从 0 到 X 的位置上遇到的符号。所以如果你希望将“+,-,Nothing,[0-9]”作为第一个元素,你需要在正则表达式 (\+\-[0-9]){0,1} 中明确提及这一点。

而且这只是针对第一个位置!

如果您期望其中的 15 个,这将使正则表达式不仅对其他人而且对您来说都完全不可读。

关于用于英国电话号码和电话代码的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31613560/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com