我有这个正则表达式:
/^(?:'[A-z](([\._\-][A-z0-9])|[A-z0-9])*[a-z0-9_]*')$/
我正试图建立一个同等的,但仍然没有成功。
有关更多信息,它是用户名的正则表达式。这是规则:
修改
我正在使用Codeigniter regex_match并且它有一个错误,不接受管道。所以等效的正则表达式不应该有管道。
我将不胜感激任何帮助。提前谢谢。
答案 0 :(得分:1)
^(?:[a-zA-Z](?:[a-zA-Z0-9._-]*[a-zA-Z0-9_]+)?)$
答案 1 :(得分:0)
假设您使用的是PCRE(或大多数)兼容语言,请尝试以下操作:
/^([A-Z][\w.-]*[A-Z_\d]|[A-Z])$/i
在javascript中:
var str = "john.m"; //example
console.log((/^([A-Z][\w.-]*[A-Z_\d]|[A-Z])$/i).test(str));
在php中:
$str = "john.m"; //example
if (!preg_match("/^([A-Z][\w.-]*[A-Z_\d]|[A-Z])$/i", $str);
没有|
:
$str = ".John.m";
if (preg_match("/^[A-Z]$/i", $str))
{
//check if it's one letter
}
else if (preg_match("/^[A-Z][\w.-]*[A-Z_\d]/i", $str))
{
//if not, check if it fits the other format
}
else
{
//we can assume that it's now failed the test
}