阻止所有大写句子

时间:2013-10-07 04:37:37

标签: regex

我正在尝试使用正则表达式来阻止所有大写句子(只有大写字母的句子),但我无法找到该模式。我在考虑^ [a-z],但这根本不起作用。

有什么建议吗?

6 个答案:

答案 0 :(得分:1)

你可以使用这样的东西来确保至少有一个小写字符(注意这是某种反向逻辑):

^.*[a-z].*$

(除非你使用的函数默认使用正则表达式对整个模式,你可以删除行锚的开头和结尾)

如果你想要正则表达式更严格(虽然我认为这里不太实用),你也许可以使用那种......

^[A-Z.,:;/() -]*[A-Z]+[A-Z.,:;/() -]*$

只允许使用大写字母和一些潜在的标点符号(可以根据需要在字符类中添加或删除它们)和空格。

答案 1 :(得分:1)

只需查找[a-z] ...如果匹配,您的句子就会过去。如果没有,则全部为大写(或标点符号)。

答案 2 :(得分:0)

这取决于你正在使用的正则表达式的风格,但如果你有一个支持前瞻的正则表达式,那么你可以使用以下表达式:

(?-i)^(?!(?=.*?[A-Z])(?:[A-Z]|(?i)[^a-z])*$)

它不会捕获任何内容,但如果使用的字母全部为大写字母,则返回false;如果使用的任何字母均为小写,则返回true。

答案 3 :(得分:0)

^[A-Z]+$不能满足您的需求吗?如果匹配,则表示输入字符串仅包含大写字母。

RegExr上的演示。

答案 4 :(得分:0)

以下正则表达式

(^|\.)[[:space:]A-Z]+\.

会发现任何在行首或前一个句号之间只包含大写字母和空格。

答案 5 :(得分:0)

看起来你想要检测那些单词嵌套在单词中的单词的句子,例如:hEllo,gOODbye,worD;这是任何在小写字母后面都有大写的单词,或者是两个或多个大写的单词。

  • 小写后的大写

    [A-Z] [A-Z]

  • 两个或更多配对的大写

    [A-Z] [A-Z]

将它们与交替相结合,

/*([a-z][A-Z]|[A-Z][A-Z])/