如何编写与不包含所有大写字母的文本匹配的正则表达式



我正在使用ASP.NET RegularExpressionValidator

我需要一个正则表达式来防止填写表单的用户使用所有大写字母。

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

鲍勃·琼斯、鲍勃·琼斯或鲍勃·琼斯等等,都不会匹配。

我可以用这个正则表达式匹配所有的大写字母:

[A-Z]{2,10}

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

如果你的目标是让每个单词一行中的大写字母不超过1个,并且假设可以限制为ASCII字母,那么试试这样的方法:

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

换言之,字符串必须完全由小写字母组成,或者由不后跟另一个大写字母的大写字母组成。

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

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

(编辑后允许使用撇号和连字符标点)

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

使用此正则表达式^[a-z ]+$如果您想要像Bob Jones这样的捕获名称,请使用这一个^([A-Z][a-z ]+)+$

也许我只是在陈述显而易见的东西,但在进行比较之前,你不能只访问myVar.string.toLower吗?

最新更新