我有一個我的網站的註冊頁面。正則表達式使用JavaScript而不是PHP
當用戶填寫表單時,他們通過JavaScript正則表達式進行實時驗證,工作正常。這樣做是通過:當用戶通過此提交表單
var password = document.getElementsByName("password")[0].value;
var pattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)([a-zA-Z0-9!\"\#$%&\'()*+,\-.\/:;<=>[email protected]\[\\\]^_`{|}~]{6,})$/;
if(pattern.test(password)){
document.getElementById("check_password").innerHTML = "Password is valid.";
} else {
document.getElementById("check_password").innerHTML = "Password is invalid. It should have at least 6 characters, and 1 lowercase letter, uppercase letter, and number.";
}
PHP的正則表達式使用:
if(!preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)([a-zA-Z0-9!\"\#$%&\'()*+,\-.\/:;<=>[email protected]\[\\\]^_`{|}~]{6,})$/", $_POST["password"])){
$error = "Password is invalid. It should have at least 6 characters, and 1 lowercase letter, uppercase letter, and number.";
}
然而,PHP保持甚至當JavaScript不扔了錯誤。這兩個正則表達式都是相同的,並且已經在PHP設置和JavaScript設置中進行了測試。但它在JavaScript中工作,但不是PHP!
爲什麼它不能在PHP中工作,我該如何解決這個問題?
它會拋出什麼錯誤。 Php不會毫無理由地拋出錯誤 – Andreas
你絕對確定'$ _POST ['password']'包含密碼? – Jeff
@Andreas PHP不會拋出錯誤,這是我的錯誤信息。基本上,問題是正則表達式不匹配。 – ngmh