我之前从未使用过正则表达式,并对如何仅允许我的用户名字段alphanumeric characters, dashes, dots, and underscores
进行了一些研究。我有以下表达式,但似乎没有起作用。
$string = "Joe_Scotto";
if (!preg_match('[a-zA-Z0-9_-.]', $string)) {
echo "Does not match Regex";
} else {
echo "Matches";
}
我希望语句在遵循“准则”时返回true,如果用户名包含除我指定的内容之外的其他内容,则返回false。任何帮助都会很棒。谢谢!
答案 0 :(得分:4)
试试这个
$string = "Joe_Scotto";
if (!preg_match('/^[A-Za-z0-9_.]+$/', $string)) {
echo "Does not match Regex";
} else {
echo "Matches";
}
答案 1 :(得分:3)
您只匹配一个字符。试试这个:
$string = "Joe_Scotto";
if (!preg_match('/^[a-zA-Z0-9_.-]+$/', $string)) {
echo "Does not match Regex";
} else {
echo "Matches";
}
+
符号表示:匹配在+
之前直接定义的1个或多个字符(*
相同但匹配0个或更多字符)。
此外,还需要分隔符'/'(或任何其他分隔符)。
在字符类中,最好将-
符号放在最后,否则可能会被误解为从_
到.
的范围
并在开头添加^
(这意味着:从输入的开头匹配)和$
到结尾(这意味着:匹配到输入的结尾)。否则,字符串的一部分也会匹配。
答案 2 :(得分:1)
您应该使用类似http://www.phpliveregex.com/p/ern
的内容$string = 'John_Buss';
if (preg_match('/[A-z0-9_\-.]+/', $string)) {
return true;
} else {
return false;
}
确保在正则表达式的开头和结尾添加/
分隔符
确保在\
-
转义字符
确保添加+
字符量词