用于检查具有有限字符的名称的正则表达式模式

我要求validation用户名中包含一些特殊字符(’ – )和空白区域。 我可以在以下正则表达式的帮助下实现这一目标 –

^[a-zA-z]+([ '-][a-zA-Z]+)*$ 

但我无法为用户输入的最大字符数添加限制,例如25表示此特定正则表达式。 那么任何人都可以解释如何为上述正则表达式做同样的事情吗? 谢谢。

您可以在开头添加一个负向前瞻,不允许26个或更多字符:

 ^(?!.{26})[a-zA-Z]+([ '-][a-zA-Z]+)*$ ^^^^ ^ 

你也有一个拼写错误[Az] ,它必须是[AZ] 。 请参阅正则表达式[Az]和[a-zA-Z]之间的差异

负向前瞻 (上面的(?!...)构造)锚定在字符串的开头(意味着它位于^之后),长度检查只执行一次,就在使用main解析之前模式部分。

您还可以在此处查看有关负前瞻如何工作的更多信息 。

只需在开头添加一个前瞻,通过添加(?=.{1,25}$)来匹配最多25个字符。

你的新正则表达式将是: ^(?=.{1,25}$)[a-zA-z]+([ '-][a-zA-Z]+)*$