我正在尝试使用正则表达式来阻止所有大写句子(只有大写字母的句子),但我无法找到该模式。我在考虑^ [a-z],但这根本不起作用。
有什么建议吗?
答案 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])/