正規表現を使用して、同じ番号にすることができない携帯電話番号の最後の 8 桁を照合する方法

WBOY
リリース: 2016-06-13 12:21:59
オリジナル
3044 人が閲覧しました

如何使用正则匹配手机号码后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,然后接任意数字,断言之后没有重复八位的相同数字(注意断言不占用空间),匹配八位任意数字,结束。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!