84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
if (!preg_match('[/^1[3|5|7|8][0-9]\d{8}$/', $phone)) { return "PleaseEnterYourPhoneNumber"; }
前后台都是/^1[3|5|7|8d{8}$/ 正则前台验证用过
后台执行 return有人说他们的网上说php 的正则库 和js 不一样有什么办法可以解决一下
ringa_lee
忍不了了...网上的这种正则真的都是抄来抄去, 一个写的有问题就个个都有问题, 为什么就不肯自己去看看正则表达式[0-9] 和 \d 是完全等价的啊, 为什么要分开成 [0-9]\d{8}, 直接写个 \d{9} 不就好了
[0-9]
\d
[0-9]\d{8}
\d{9}
所以正则改成 /^1[3|5|7|8]\d{9}$/ 吧!(你代码中一开始的那个[肯定是复制的时候多复制来的或者误输入)
/^1[3|5|7|8]\d{9}$/
[
至于你的问题, 参考以下两段代码吧, 效果上是完全等价的:
PHP:
$re = '/^1[3|5|7|8]\d{9}$/'; $str = '13012345678'; if (preg_match($re, $str)) { echo '验证通过'; } else { echo '验证失败'; }
Javascript:
var re = /^1[3|5|7|8]\d{9}$/; var str = '13012345678'; if (re.test(str)) { console.log('验证通过'); } else { console.log('验证失败'); }
//假设前台有个表单的name是phone $phone=$_POST['phone']; if ($phone != '[/^1[3|5|7|8][0-9]\d{8}$/'){ return "PleaseEnterYourPhoneNumber"; }
<?php if (!preg_match('[/^1[3|5|7|8][0-9]\d{8}$/', $phone)) { return "PleaseEnterYourPhoneNumber"; } ?>
忍不了了...
网上的这种正则真的都是抄来抄去, 一个写的有问题就个个都有问题, 为什么就不肯自己去看看正则表达式
[0-9]
和\d
是完全等价的啊, 为什么要分开成[0-9]\d{8}
, 直接写个\d{9}
不就好了所以正则改成
/^1[3|5|7|8]\d{9}$/
吧!(你代码中一开始的那个
[
肯定是复制的时候多复制来的或者误输入)至于你的问题, 参考以下两段代码吧, 效果上是完全等价的:
PHP:
Javascript: