使用PHP

时间:2016-01-30 15:59:42

标签: php regex

我之前从未使用过正则表达式,并对如何仅允许我的用户名字段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。任何帮助都会很棒。谢谢!

3 个答案:

答案 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;
}

确保在正则表达式的开头和结尾添加/分隔符

确保在\

之前使用-转义字符

确保添加+字符量词