我一直在谷歌搜索这个寻找类似的例子。我需要使用以下正则表达式(可行)但将允许的字符数限制为20:
/^[A-Za-z0-9]+(?:[@_\-.][A-Za-z0-9]+)*$/
问题是,唯一的例子是使用更简单的匹配模式,我似乎无法在上面模拟:
例如/ ^。{1,35} $ /
答案 0 :(得分:2)
使用strlen()验证长度:
if (strlen($value) > 20)
{
// Too long
}
else
{
// OK, perform regex
}
答案 1 :(得分:2)
我认为你想要允许的字符长度是1到20.如果是,那么你可以试试下面的正则表达式。
^(?=.{1,20}$)[A-Za-z0-9]+(?:[@_\-.][A-Za-z0-9]+)*
第一个断言 (?=.{1,20}$)
正面预测字符长度必须是1到20。
答案 2 :(得分:0)
@wavemode将第一个匹配限制为一个字符,然后确保第二个匹配的长度在0到19之间:
在2和第一个符号之间添加alphanum重复。
/^[A-Za-z0-9](?:[A-Za-z0-9]*[@_\-.][A-Za-z0-9]+){0,19}$/