我想要一个允许用户输入以下值的正则表达式。最少四和最多 30 字符和第一个字符应为大写。
例如:John,Smith,Anderson,Emma
我不希望用户输入以下类型的值
Jooohnnnnnn,Smmmmith,Aaaanderson,Emmmmmmmmma
任何人都可以为我提供正则表达式吗?我搜索了很长时间但找不到有效的RegEx。
我需要它用于我的ASP.net MVC应用程序模型验证。
由于
编辑:我不知道如何检查重复的字符我刚试过以下
@"^[A-Z]{1}[a-zA-Z ]{2,29}$"
我想添加的规则是
1. First character Upper case
2. 4-30 characters
3. No repeats of characters. Not greater than 2
答案 0 :(得分:7)
要对正则表达式进行检查,您可以使用否定的预测:
^(?!.*(.)\1{2})[A-Z][a-zA-Z ]{3,29}$
前瞻(?!...)
将使整个正则表达式失败,如果里面的内容匹配。
要查找重复的模式,我们使用捕获组:(.)\1{2}
。我们捕获第一个字符,然后检查它是否后跟(至少)两个相同的字符和反向引用\1
。
请参阅demo here。
答案 1 :(得分:3)
以下是您要找的内容:
^ (?# Starting of name)
(?=[A-Z]) (?# Ensure it starts with capital A-Z without consuming the text)
(?i:([a-z]) (?# Following letters ignoring case)
(?!\1{2,}) (?# Letter cant be followed by previous letter more than twice)
){3,30} (?# Allow condition to be repeated 3 to 30 times)
$
视觉表示如下所示: