私のウェブサイトにサインアップページがあります。RegexはJavaScriptで動作しますが、PHPは動作しません
ユーザーがフォームに記入すると、JavaScript Regexを通じてリアルタイム検証が行われますが、これは正常に動作します。これを介して行われます:
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では動作しないのですか?どのように問題を解決できますか?
戻り値INT(0)が見つからない場合:するpreg_matchのリターンがあれば
どのようなエラーが発生しますか。 phpは何の理由もなくエラーをスローしません。 – Andreas
'$ _POST ['password']'にパスワードが含まれていることは間違いありませんか? – Jeff
@Andreas PHPはエラーをスローしません、それは私のエラーメッセージです。基本的に、問題は正規表現が一致しないことです。 – ngmh