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

时间:2016-08-02 06:36:48

标签: ios regex

我要求验证用户名中包含一些特殊字符(&#39 ;-)和其中的空格。我能够在以下正则表达式的帮助下实现这一目标 -

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

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

2 个答案:

答案 0 :(得分:4)

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

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

您还有一个拼写错误[A-z],它必须是[A-Z]。请参阅Difference between regex [A-z] and [a-zA-Z]

negative lookahead(上面的(?!...)构造)锚定在字符串的开头(意味着它位于^之后),长度检查只执行一次,在使用主要的消费模式部分进行解析之前。

您还可以在how a negative lookahead works here上看到更多信息。

答案 1 :(得分:3)

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

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