Java 接受电话号码的正则表达式
可能重复:Java 接受电话号码的正则表达式,java,python,regex,Java,Python,Regex,可能重复: 我需要一个接受以下所有电话号码格式的正则表达式: +1-650-123-0123 (650)123 0123 (650)123-0123 (+1):650-123-0123 (+1)650 123 0123 我目前有以下正则表达式: \(?\+?[0-9]?\)?-?\(?(\d{3})\)?(\s|-)+(\d{3})(\s|-)+(\d{4}) 我目前面临的问题是,它接受了大多数,但不接受以下内容:(650)123-0123。中间的部分((s)+)应该只匹配如果它找到(XYZ
我需要一个接受以下所有电话号码格式的正则表达式: +1-650-123-0123 (650)123 0123 (650)123-0123 (+1):650-123-0123 (+1)650 123 0123 我目前有以下正则表达式:
\(?\+?[0-9]?\)?-?\(?(\d{3})\)?(\s|-)+(\d{3})(\s|-)+(\d{4})
我目前面临的问题是,它接受了大多数,但不接受以下内容:(650)123-0123。中间的部分((s)+)应该只匹配如果它找到(XYZ)。我该怎么做?我试着做了一个向前看/向后看的动作,但没能成功
谢谢 请查看下面我的来源。这将为您提供许多起点,用于构建电话号码的正则表达式
是我的来源。请检查下面的我的来源。这将为您提供许多起点,用于构建电话号码的正则表达式
是我的源代码。您可以使用类似
(?(?=regex)then | else)的条件look ahead
,但AFAIK Java的标准regex引擎不支持这些
或者,构建两个表达式并测试其中是否有匹配的表达式。这将使读/写表达式更容易,甚至可能不会对性能造成明显的影响。如果需要在单个表达式中使用所有这些表达式,请尝试以下操作:
^expression1$|^expression2$|...
但是,请注意,如果表达式变得太复杂,这可能会导致一些问题(一些JVM版本似乎对
(or)表达式有困难。您可以使用类似(?(?=regex)然后| else)的条件look ahead
,但AFAIK Java的标准正则表达式引擎不支持这些
或者,构建两个表达式并测试其中是否有匹配的表达式。这将使读/写表达式更容易,甚至可能不会有明显的性能影响。如果需要在单个表达式中包含所有表达式,请尝试以下操作:
^expression1$|^expression2$|...
但是,请注意,如果表达式变得太复杂,这可能会导致一些问题(某些JVM版本似乎在使用|
(或)表达式时遇到困难。有一个解决了您的问题的方法
他们的解决方案已经被采纳
功能亮点
分析/格式化/验证所有国家/地区的电话号码
世界的一部分
getNumberType
-根据
数字本身;能够区分固定电话、移动电话、免费电话、,
保费、共享成本、VoIP和个人号码(无论何时)
可行)
isNumberMatch
-获取两个
数字可能是相同的
getExampleNumber
/getExampleNumberByType
-
提供所有国家/地区的有效示例编号,包括
指定需要哪种类型的示例电话号码的选项
isPossibleNumber
-快速猜测一个数字是否可能
phonenumber只使用长度信息,比
完全验证
isValidNumber
-对的电话号码进行完全验证
使用长度和前缀信息的区域
asyutypeformatter
-
当用户输入每个数字时,动态格式化电话号码
findNumbers
-在文本输入中查找数字
phonenumberofrinegeocoder
-提供与电话号码相关的地理信息
有一个解决你问题的方法
他们的解决方案已经被采纳
功能亮点
分析/格式化/验证所有国家/地区的电话号码
世界的一部分
getNumberType
-根据
数字本身;能够区分固定电话、移动电话、免费电话、,
保费、共享成本、VoIP和个人号码(无论何时)
可行)
isNumberMatch
-获取两个
数字可能是相同的
getExampleNumber
/getExampleNumberByType
-
提供所有国家/地区的有效示例编号,包括
指定需要哪种类型的示例电话号码的选项
isPossibleNumber
-快速猜测一个数字是否可能
phonenumber只使用长度信息,比
完全验证
isValidNumber
-对的电话号码进行完全验证
使用长度和前缀信息的区域
asyutypeformatter
-
当用户输入每个数字时,动态格式化电话号码
findNumbers
-在文本输入中查找数字
phonenumberofrinegeocoder
-提供与电话号码相关的地理信息
请看。@edmastermind29,这不是他想要的。他必须验证给定的电话号码,而不是将其正常化。我不确定,但看起来您希望在(650)后面有一个空格或带(\s|-)+您可以使用多个regexp和/或它们。在某些情况下,多个简单regexp更容易调试。是的,但我只需要一个空格或-如果发现类似(650)的内容before..这可能吗?请看。@edmastermind29,这不是他想要的。他必须验证给定的电话号码,而不是将其正常化。我不确定,但看起来您希望在(\s |-)的(650)后面有一个空格或+您可以使用多个regexp和/或它们。在某些情况下,多个简单regexp更容易调试。是的,但我只需要一个空格或-如果发现类似(650)的内容之前..这可能吗?复制粘贴不是很好的练习。我不想要一个全新的正则表达式。我想要我的思维过程,添加一些东西或更改一些东西使其工作。复制你的正则表达式对我没有帮助。整个想法是我学习如何修复我的最终正则表达式