我环顾四周,发现那里有很多教程。但在我的情况下,它们都无济于事。这是我的脚本:
if(!preg_match('/^[0-9A-Za-z!@#$%]+$/',$user_name)) {
echo"bad username";
}
这段代码不允许任何空格,无论它们是在前面、结尾还是中间。
我只想在前面和结尾之间允许,但不允许在前面和结尾。
任何人都可以帮助我吗?
我环顾四周,发现那里有很多教程。但在我的情况下,它们都无济于事。这是我的脚本:
if(!preg_match('/^[0-9A-Za-z!@#$%]+$/',$user_name)) {
echo"bad username";
}
这段代码不允许任何空格,无论它们是在前面、结尾还是中间。
我只想在前面和结尾之间允许,但不允许在前面和结尾。
任何人都可以帮助我吗?
你拥有的那一点
[0-9A-Za-z!@#$%]
匹配任何这些字符+
意味着一个或多个。如果您想匹配这些或空格,只需在列表中添加一个空格,并在现有的之前和之后放置一个分组,如下所示:
/^[0-9A-Za-z!@#$%][0-9A-Za-z!@#$% ]+[0-9A-Za-z!@#$%]$/
这样做的副作用是用户名必须至少有 3 个字符长。如果您想允许较小的用户名,您可以拆分检查:
if(!preg_match('/^[0-9A-Za-z!@#$% ]+$/',$user_name) || preg_match('/^ /',$user_name) || preg_match('/ $/',$user_name)) {
确保!preg_match('/^[0-9A-Za-z!@#$% ]+$/',$user_name)
用户名仅包含批准的字符,preg_match('/^ /',$user_name)
检查它是否以空格开头,并preg_match('/ $/',$user_name)
检查它是否以空格结尾。
如果您想接受输入的内容并自动删除任何前导或尾随空格,请使用该trim
功能。
改用修剪来省略文本左侧和右侧的空格。
<?php
$username = trim($username);
//your code...
?>
你可以使用这个:
/^[0-9A-Za-z!@#$%]++(?>[0-9A-Za-z!@#$%\s]+[0-9A-Za-z!@#$%]+)?+$/
或者如果你想允许空字符串
/^(?>[0-9A-Za-z!@#$%]+(?>[0-9A-Za-z!@#$%\s]*[0-9A-Za-z!@#$%]+)?+)?+$/