Heim >Backend-Entwicklung >PHP-Tutorial >怎么使用正则匹配手机号码后8位不能为相同数字

怎么使用正则匹配手机号码后8位不能为相同数字

WBOY
WBOYOriginal
2016-06-13 12:21:593076Durchsuche

如何使用正则匹配手机号码后8位不能为相同数字?
如何使用正则匹配手机号码后8位不能为相同数字?

目前我已经有匹配手机号码的正则表达式 /^1[3,5,8,7]\d{9}$/   需要修改修改。但是想了很久也没想出来请各位大神帮忙2
------解决思路----------------------

引用:
Quote: 引用:

<?php<br />$ar = array(<br />	'13012345678',<br />	'13211113333',<br />	'13644444444'<br />);<br /><br />foreach($ar as $val)<br />{<br />	if(preg_match('/^1[3,5,8,7]\d(?!(\d)\\1{7})\d{8}/', $val))<br />	{<br />		echo $val . ' is ok.';<br />	}<br />	else<br />	{<br />		echo $val . ' is fail.';<br />	}<br />	echo '<br/>';<br />}


13012345678 is ok.
13211113333 is ok.
13644444444 is fail.


大神能详细讲一下这个正则的含义吗?


正确的正则应该这样写
^1[3587]\d(?!(\d)\\1{7})\d{8}?

^:表示开始,
1:以1开始
[3587]:3或者5或者8或者7
\d:匹配任意数字
(?!):这个是断言,断言后面不能怎么样
(\d)\\1{7}:表示匹配一个数字,捕获这个数字,并连续七次。最终意思表示,一个数字,重复八遍
(?!(\d)\\1{7}):断案后面不能用连续重复八次的相同的数字
\d{8}:匹配八位任意数字
?:结尾

总结:以1开始,紧接着3587,然后接任意数字,断言之后没有重复八位的相同数字(注意断言不占用空间),匹配八位任意数字,结束。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn