簡體   English   中英

正則表達式適用於JavaScript,但不適用於PHP

[英]Regex works with JavaScript but not PHP

我在我的網頁的JavaScript中使用了這個正則表達式,它完美地工作:

var nameRegex = /^([ \u00c0-\u01ffa-zA-Z'\-])+$/;
return nameRegex.test(name);

然后我想將它包含在我的PHP腳本中作為第二個屏障,以防用戶禁用JavaScript等。但每當我使用它時,它將失敗我通過它的每個字符串,甚至正確的名稱。 我嘗試使用單引號來停止轉義字符,但后來我不得不逃避正則表達式中包含的單引號,並想出了這個:

$nameRegex = '/^([ \u00c0-\u01ffa-zA-Z\'\-])+$/';
if ($firstName == ""){
    $valSuccess = FALSE;
    $errorMsgTxt .= "Please enter your first name<br>\n";
} elseif (!preg_match($nameRegex, $firstName)){
    $valSuccess = FALSE;
    $errorMsgTxt .= "Please enter a valid first name<br>\n";
}

但是,再一次,它失敗了有效的名字。

所以我的問題是,如何讓我的正則表達式“安全”用於PHP?

你的正則表達式的問題是它在 ,但你的語法在無效。

您需要考慮\\X匹配單個Unicode字素,無論是使用組合標記編碼為單個代碼點還是多個代碼點。 正確的語法是......

/^[ \X{00c0-01ff}a-zA-Z'-]+$/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM