例如,我希望.brewpixels
和brewpixels.
回显
您的用户名无效
如果点位于第一个和最后一个字母之间的任何位置,则脚本应该回显
您的用户名很好
如何更改正则表达式以实现此目的?
$username = 'brew.pixels';
if(preg_match('/(^\d|[^\w])/', $username)){
echo 'your username is invalid';
} else {
echo 'your username is good';
}
答案 0 :(得分:3)
以下内容将匹配以点开头或结尾的字符串
(诀窍是逃避点,因为它在正则表达式中具有特殊含义)
/^\.|\.$/
created a ticket at user voice
附加条件only alpha num underscore and dot within the body
:
/^(\.[\w.]+|[\w.]+\.)$/
只需在您给定的代码中替换:
if(preg_match(regexToMatchBadWords, $username)){
echo 'your username is invalid';
} else {
echo 'your username is good';
}
或者,你可以通过强制第一个和第二个来直接匹配正确的单词。最后的字符是alpha-num-underscore,内部的主体也接受点:
/^(\w[\w.]+\w)$/
这颠倒了代码中的逻辑:
if(preg_match(/^(\w[\w.]+\w)$/, $username)){
echo 'your username is good';
} else {
echo 'your username is invalid';
}
答案 1 :(得分:1)
我不确定你是否想要它有其他的正则表达式信息,但你可以这样做:
if (preg_match('/^\./', $username) || preg_match('/\.$/', $username) {
echo 'invalid';
}
这将使.brew和brew。失败。
我忘记了管道角色,请参阅Enissays回答正确的简单方法。