验证字母数字、下划线和连字符且无空格的正则表达式,仅限40个字符。

5

我想知道如何在正则表达式中指定字符计数。我已经有了正确的正则表达式,只需要确保它可以验证零到四十个字符。

以下是正则表达式:

$fnameRegex = "/^[a-zA-Z0-9{0,40}-_]+$/";

我可能把{0,40}放错了位置。

3个回答

12

尝试

$fnameRegex = "/^[a-zA-Z0-9\-_]{0,40}$/";

字符类[]中的所有内容都只匹配一个字符。将数量限定符放在外面(之前使用了+表示1个或更多 - 用{0, 40}代替,表示0到40个)。

此外,我转义了您字符类中的-字符,否则它会被解释为范围。

我还向您推荐了一个很棒的regexr网站,可用于与正则表达式进行交互式操作和练习。


我听说当你转义破折号时会发生有趣的事情。 - GivenPie
真的吗?当您转义字符类中表示字面意义的破折号时,会发生糟糕的事情。如果由于某种原因您不想转义它,则将其放置在字符类的开头或结尾,以消除歧义:[a-zA-Z0-9_-] - mathematical.coffee
我已经尝试了上述模式,但单词之间允许有空格,那么如何避免空格呢? - Sajith

1

尝试[a-zA-Z0-9]{40},这将检查具有大写和小写字母的40个字符的字母数字。


-2

这个怎么样?

^(\d){0,40}$

\d 只匹配数字 {0,40} 表示前面的表达式 (\d) 可以出现 0 到 40 次。

您可以使用此工具检查您的正则表达式。它可能很有用: http://gskinner.com/RegExr/

希望这能帮到您


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接