gpt4 book ai didi

php - Preg_match 验证字符串中的特殊字符

转载 作者:行者123 更新时间:2023-12-04 05:50:08 29 4
gpt4 key购买 nike

我只想允许使用字母、数字、空格、无色线和连字符。

到目前为止,我认为这个 preg_match 可以完成这项工作:

if(preg_match('/[^a-z0-9 _]+$/i', $name)) {
$error = "Name may only contain letters, numbers, spaces, \"_\" and \"-\".";
}

但我刚刚意识到字符串中的特殊字符不会产生错误。例如

hello"@£$joe



不会产生错误。是否可以进行一些更改并使其正常工作,或者我是否需要其他解决方案?

最佳答案

问题出在 $象征。您特别要求它匹配字符串的结尾。表达式 /[^a-z0-9 _]+$/i将不匹配 hello"@£$joe因为 joe匹配 [a-z0-9 _]+$ ;所以当你否定这个类时它显然不会匹配。删除 $符号,一切都会如预期的那样:

if(preg_match('/[^a-z0-9 _]+/i', $name)) {
// preg_match will return true if it finds
// a character *other than* a-z, 0-9, space and _
// *anywhere* inside the string
}

通过在 JavaScript 控制台中逐行粘贴这些行,在浏览器中对其进行测试:

/[^a-z0-9 _]+/i.test("@hello");        // true
/[^a-z0-9 _]+/i.test("joe@"); // true
/[^a-z0-9 _]+/i.test("hello\"@£$joe"); // true
/[^a-z0-9 _]+/i.test("hello joe"); // false

关于php - Preg_match 验证字符串中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10170400/

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