^[a-zA-Z0-9]*[a-zA-Z0-9 _][a-zA-Z0-9]{2,24}$
这就是我现在所拥有的。
我想先要一个字母数字;允许使用字母数字,下划线,连字符,句号和空格;要求它以字母数字结尾。但我只想允许多达3个特殊字符。
我对如何限制特殊字符的数量感到困惑。
答案 0 :(得分:3)
您也可以使用此正则表达式:
/^(?!(?:[a-z\d]*[_. -]){4})[a-z\d][\w. -]{0,22}[a-z\d]$/i
前瞻(?!(?:[a-z\d]*[_. -]){4})
用于检查无效字符的出现次数是否少于4次。如果有4个或更多,那么负前瞻中的模式将匹配,并使前瞻失败。
由于字符串必须以字母数字开头和结尾,并且长度至少为2,因此可以将[a-z\d]
指定为字符串的开头和结尾。中间的其余字符可以包含重复0到22次的任何[a-zA-Z0-9_. -]
,因为2个字符已经用于起始结束字母数字。
答案 1 :(得分:1)
好的,这应该是最后一次修改:没想到总字符数限制。添加前瞻(假设你的正则表达式支持它)。
可能有一个比这更好的方法,但它不会来找我(也许使用前瞻)。这是我能想到的:
^(?=^.{2,24}$)[a-zA-Z0-9]+([a-zA-Z0-9]*[_\-. ]){0,3}[a-zA-Z0-9]+$
它不太漂亮,但应该有效。
答案 2 :(得分:0)
^[a-zA-Z0-9]+[ _.-]?[a-zA-Z0-9]*[ _.-]?[a-zA-Z0-9]*[ _.-]?[a-zA-Z0-9]+$
可能有更好的方法可以做到这一点,但我认为你可以让无效字符成为可选字符,最多出现三次,其他有效字符在它们之间显示0次或更多次