gpt4 book ai didi

PHP: preg_match 长度限制

转载 作者:可可西里 更新时间:2023-11-01 13:36:22 25 4
gpt4 key购买 nike

我使用 preg_match('/[a-z]+[0-9]/', strtolower($_POST['value'])) 检查字符串是否同时包含字母和数字。我怎样才能改变它只允许 5 ~ 15 个字符?

/[a-z]+[0-9]{5,15}/ 不起作用。

更新现在我尝试了:

if(preg_match('/^[a-z0-9]{5,15}$/', strtolower($_POST['value']))) {
echo 'Valid!';
}

else {
echo 'NOOOOO!!!';
}

如果我在输入字段中键入“dfgdfgdfg”,它会显示“有效!”。该值必须同时包含字母和数字,并且介于 5-15 个字符之间。

最佳答案

诀窍是使用积极的前瞻性,在这种情况下你需要两个。

因此 (?=.*[0-9]) 将检查您的输入中是否至少有一个数字。下一步是什么?您猜对了,我们只需添加 (?=.*[a-z])。现在让我们将它与 anubhava 合并的回答:

(?=.*[0-9])(?=.*[a-z])^[a-z0-9]{5,15}$

这一般意味着什么?

  • (?=.*[0-9]) : 检查是否有数字
  • (?=.*[a-z]) : 检查是否有字母
  • ^ : 匹配字符串的开头
  • [a-z0-9]{5,15}:匹配数字和字母 5 到 15 次
  • $ : 匹配字符串结尾

从 PHP 的角度来看,您应该始终检查是否设置了变量:

$input = isset($_POST['value']) ? strtolower($_POST['value']) : ''; // Check if $_POST['value'] is set, otherwise assign empty string to $input

if(preg_match('~(?=.*[0-9])(?=.*[a-z])^[a-z0-9]{5,15}$~', $input)){
echo 'Valid!';
}else{
echo 'NOOOOO!!!';
}

Online regex demo

关于PHP: preg_match 长度限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19422589/

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