在我的注册页面我需要验证的用户名作为字母数字只,而且还与可选的下划线。我想出了这一点:

function validate_alphanumeric_underscore($str) 
{
    return preg_match('/^\w+$/',$str);
}

这似乎工作不错,但我不是一个正则表达式的专家!有谁发现任何问题?

有帮助吗?

解决方案

在实际匹配\w的字符取决于区域设置正在使用:

  

一个“字”的字符是任何字母或数字或下划线字符,也就是,它可以是一个Perl“的 ”的一部分的任何字符。字母和数字的定义由PCRE字符表控制,如果特定区域设置匹配正在发生可能会有所不同。例如,在“FR”(法国)区域,一些字符码大于128瓦特用于重音字母,并且这些匹配由\。

所以,你应该更好地明确指定你想要的字符,可以让:

/^[A-Za-z0-9_]+$/

这仅允许字母数字字符和下划线

如果你想允许下划线仅作为连接字符,并要强制该用户名必须以字母字符开头的:

/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top