只能由“0-9a-zA-Z”和“-”组成,并且“-”不能在头尾出现,长度至少一位。
征求一下广大牛淫的意见。
^[0-9a-zA-Z][0-9a-zA-Z\-]*[0-9a-zA-Z]$
上边的不对,修改一个:
^(?!-)[a-z0-9A-z-]*[a-z0-9A-z]$
不以 – 开头,且以字母数字结尾,长度可以是1或多。
/^(?!\-)[0-9a-zA-Z\-]*?[0-9a-zA-Z]{1}$/
^([0-9a-zA-Z]{1}[0-9a-zA-Z-]*?[0-9a-zA-Z]{1}|[0-9a-zA-Z]{1})$
/^[0-9a-zA-Z]+([0-9a-zA-z-]+[^-\W_])*$/
关键是一个字的时候 所以给他分组就可以了 这题谁在zhihu上问过
对了 域名就是这种格式的 不包括后缀
其实分开是很简单的事情,没必要非整一个很复杂低效的正则
!/^-/.test(string) && !/-$/.test(string) && /^[0-9a-zA-Z\-]+$/.test(string)
function test($s, $t){
var_dump(preg_match('#^(?!-)[0-9a-zA-Z-]+(?<!-)$#', $s)==$t);
}
test('a322bc', 1);
test('a32--2bc', 1);
test('a322bc-', 0);
test('-a322bc', 0);
test('-a322bc-',0);
test('1', 1);
test('a', 1);
test('sa122a', 1);
test('--', 0);
test('-', 0);
/^[^-][A-Za-z0-9-]+[^-]$/
正文完