gpt4 book ai didi

javascript - 正则表达式适用于 JavaScript,但不适用于 PHP

转载 作者:行者123 更新时间:2023-12-02 17:59:03 24 4
gpt4 key购买 nike

我在我的网页的 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 中“安全”使用?

最佳答案

正则表达式的问题在于它适用于 ,但您的语法在 中无效。

您需要考虑与单个 Unicode 字素匹配的 \X,无论是编码为单个代码点还是使用组合标记的多个代码点。正确的语法是..

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

关于javascript - 正则表达式适用于 JavaScript,但不适用于 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20720386/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com