使用正则表达式和php分解数组中的电话号码
我设置了这种电话号码,我想将这些号码分解成如下数组:使用正则表达式和php分解数组中的电话号码,php,regex,Php,Regex,我设置了这种电话号码,我想将这些号码分解成如下数组: +91 9231665828 +91 9231665828 +91-9231675067 +91-9231675067 +919231665794 +919231665794 91 9231675653 91 9231675653 91-9231675067 91-9231675067 919231665794 919231665794 0 9231675653 0 9231675653 0-9231665808
+91 9231665828 +91 9231665828
+91-9231675067 +91-9231675067
+919231665794 +919231665794
91 9231675653 91 9231675653
91-9231675067 91-9231675067
919231665794 919231665794
0 9231675653 0 9231675653
0-9231665808 0-9231665808
09231665808 09231665808
我写了一些正则表达式,但不起作用
/\n |\s(?=(\+91(?:-|\s |)91(?:-|\s |)0(?:-|\s |))?[7-9][0-9]{9}$/
我想要正确的正则表达式。为什么不更一般一些,保持简单呢
Array
(
[0] => +91 9231665828
[1] => +91-9231675067
[2] => +919231665794
[3] => 91 9231675653
[4] => 91-9231675067
[5] => 919231665794
[6] => 0 9231675653
[7] => 0-9231665808
[8] => 09231665808
[9] => +91 9231665828
[10] => +91-9231675067
[11] => +919231665794
[12] => 91 9231675653
[13] => 91-9231675067
[14] => 919231665794
[15] => 0 9231675653
[16] => 0-9231665808
[17] => 09231665808
)
这将匹配所有示例“电话号码”,并将字符串拆分为一个数组。但是,如果您想验证这些数字,那么这是一个不同的正则表达式
示例/测试:
\+?\d+[ -]?\d+
为什么不更笼统一点,简单一点呢
Array
(
[0] => +91 9231665828
[1] => +91-9231675067
[2] => +919231665794
[3] => 91 9231675653
[4] => 91-9231675067
[5] => 919231665794
[6] => 0 9231675653
[7] => 0-9231665808
[8] => 09231665808
[9] => +91 9231665828
[10] => +91-9231675067
[11] => +919231665794
[12] => 91 9231675653
[13] => 91-9231675067
[14] => 919231665794
[15] => 0 9231675653
[16] => 0-9231665808
[17] => 09231665808
)
这将匹配所有示例“电话号码”,并将字符串拆分为一个数组。但是,如果您想验证这些数字,那么这是一个不同的正则表达式
示例/测试:
\+?\d+[ -]?\d+
使用此模式^(\+?\d+[-]?\d+)
注意锚定^
使用此模式
^(\+?\d+[-]?\d+)
注意锚定^
我同意tenub验证是一项单独的任务。但您确实需要确保引擎知道一个数字的结束和另一个数字的开始:
\+?\b\d{1,2}[ -]?\d{9,10}\b
编辑:我不知道重复数字的意义,但是如果您只想要每行的第一个数字,您可以在模式的开头抛出一个^
:
^\+?\b\d{1,2}[ -]?\d{9,10}\b
我同意tenub的观点,验证是一项单独的任务。但您确实需要确保引擎知道一个数字的结束和另一个数字的开始:
\+?\b\d{1,2}[ -]?\d{9,10}\b
编辑:我不知道重复数字的意义,但是如果您只想要每行的第一个数字,您可以在模式的开头抛出一个^
:
^\+?\b\d{1,2}[ -]?\d{9,10}\b
是的,它能找到号码。谢谢,但当尝试拆分时,会留下剩余的空间。不要
preg\u split
。只需将preg\u match\u all
放入$matches
数组中即可。是的,它可以找到数字。谢谢,但当尝试拆分时,会留下剩余的空间。不要preg\u split
。只需使用preg\u match\u all
进入$matches
数组。我需要所有数字。不仅是第一个。@AvikarshaSaha-那么这应该对你有用。如果您只得到一个号码,请使用g
标志。我需要所有号码。不仅是第一个。@AvikarshaSaha-那么这应该对你有用。如果您只返回一个数字,请使用g
标志。为什么每行有两个数字?如果它们总是一样的,你可以把整行读成一个字符串,然后只看该字符串的前半部分。类似于firstHalf=wholeLine.substring(0,firstHalf.length/2)
(sry表示类似java的伪代码)的内容不可能总是相同的,可以是多列数字为什么每行有两个数字?如果它们总是一样的,你可以把整行读成一个字符串,然后只看该字符串的前半部分。类似于firstHalf=wholeLine.substring(0,firstHalf.length/2)
(sry表示类似java的伪代码)的内容不可能总是相同的,可以是多列数字