if (!preg_match('[/^1[3|5|7|8][0-9]\d{8}$/', $phone)){ return "PleaseEnterYourPhoneNumber";}
前後台都是/^1[3|5|7|8d{8}$/ 正則
前台驗證用過
後台執行 return
有人說他們的網上說php 的正則庫 和js 不一樣
有什麼辦法可以解決一下
回複內容:
if (!preg_match('[/^1[3|5|7|8][0-9]\d{8}$/', $phone)){ return "PleaseEnterYourPhoneNumber";}
前後台都是/^1[3|5|7|8d{8}$/ 正則
前台驗證用過
後台執行 return
有人說他們的網上說php 的正則庫 和js 不一樣
有什麼辦法可以解決一下
忍不了了...
網上的這種正則真的都是抄來抄去, 一個寫的有問題就個個都有問題, 為什麼就不肯自己去看看Regex
[0-9] 和 \d 是完全等價的啊, 為什麼要分開成 [0-9]\d{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";}