gpt4 book ai didi

php preg_match 只匹配数字、字母和点

转载 作者:可可西里 更新时间:2023-11-01 00:31:15 25 4
gpt4 key购买 nike

我已经搜索了 2 个小时了,但还是没找到。我需要评估帐户名称的输入。这只能包含数字 (0-9)、字母 (a-zA-Z) 和点 (. ).

其他一切都是被禁止的。所以,没有下划线(_),加上(+)等等。

有效的帐户应该是这样的,例如:

john.green
luci.mayer89
admin

我尝试了很多 preg_match/regex 示例,但无法正常工作。每当我执行 echo preg_match(...) 时,我都会将 1 设为 true

$accountname = "+_#luke123*";
echo preg_match("/[a-z0-9.]/i", $accountname);

//--> gives back 1 as true

此外,最好控制帐户名称以至少 2 个字母或数字开头并以至少 1 个字母或数字结尾 - 但我远非如此。

最佳答案

您需要使用 anchor 和量词:

echo preg_match("/^[a-z0-9.]+$/i", $accountname);

您的字符串 +_#luke123* 包含一个字母和一个数字,因此存在匹配项。如果我们告诉引擎只匹配从开头 (^) 到结尾 ($) 的整个字符串,我们将确保它不会匹配。 + 确保我们不仅捕获 1 个字符,而且捕获所有字符。

参见 this demo ,现在没有匹配项!

编辑:由于您还需要检查这些条件:

string must start with 2 or more letters or numbers and end with 1 or more letters or numbers

我可以建议这个 ^[a-z0-9]{2,}[a-z0-9.]*[a-z0-9]+$ 正则表达式(必须与i 选项)意味着:

  • 以 2 个或更多字母或数字开头
  • 然后跟在任意数量的数字、字母或句点之后
  • 以 1 个或多个字母或数字结尾。

Another demo

关于php preg_match 只匹配数字、字母和点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881823/

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