HTML5正则表达式模式:允许使用字母数字和最多3个空格,下划线和连字符

时间:2013-02-01 14:57:44

标签: regex html5

^[a-zA-Z0-9]*[a-zA-Z0-9 _][a-zA-Z0-9]{2,24}$

这就是我现在所拥有的。

我想先要一个字母数字;允许使用字母数字,下划线,连字符,句号和空格;要求它以字母数字结尾。但我只想允许多达3个特殊字符。

我对如何限制特殊字符的数量感到困惑。

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次或更多次