如何编写与不包含全部大写的文本匹配的正则表达式?

时间:2012-08-02 19:52:53

标签: asp.net regex forms validation

我正在使用ASP.NET RegularExpressionValidator

我需要一个正则表达式来阻止填写表单的用户使用全部大写字母。

例如,如果他们写下自己的名字:

Bob JONES或BOB JONES或BOB JOnes或其他什么,它将不匹配。

我可以使用此正则表达式匹配所有大写字母:

[A-Z]{2,10}

但是RegularExpressionValidator要求我匹配有效的文本,而不是无效的文本。

4 个答案:

答案 0 :(得分:2)

如果您的目标是让每个单词一次连续不超过1个大写字母,并且假设可以限制为ASCII字母,请尝试以下操作:

^(?:[a-z]|[A-Z](?![A-Z])|['-])+$

换句话说,字符串必须完全由小写字母或大写字母组成,后面跟不是另一个大写字母。

这适用于单个单词。对于多个单词(如全名,第一个和最后一个),只需在交替中添加一个空格:

^(?:[a-z]|[A-Z](?![A-Z])|[\s'-])+$

(编辑为允许撇号和连字符标点符号)

答案 1 :(得分:1)

使用此正则表达式:@" ^ [^ A-Z] * $"它将匹配任何不包含大写字符的内容。

答案 2 :(得分:0)

使用此正则表达式^[a-z ]+$ 如果你想要像Bob Jones这样的抓住名称使用这个^([A-Z][a-z ]+)+$

答案 3 :(得分:0)

也许我只是说明显了,但是在做比较之前你不能只对myVar.string.toLower说明吗?