Regex 阻止所有大写的句子

Regex 阻止所有大写的句子,regex,Regex,我试图使用正则表达式来阻止所有大写句子(只有大写字母的句子),但我无法成功地找到模式。我在想^[a-z],但这根本不起作用 有什么建议吗?您可以使用类似的方法来确保至少有一个小写字符(注意,这是一种反向逻辑): (除非您正在使用的函数在默认情况下对整个模式使用正则表达式,否则您可以删除线锚的开头和结尾) 如果您希望正则表达式更加严格(尽管我认为这在这里不太实际),您可以使用类似的东西 ^[A-Z.,:;/() -]*[A-Z]+[A-Z.,:;/() -]*$ 只允许大写字母、一些可能的标点符

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


有什么建议吗?

您可以使用类似的方法来确保至少有一个小写字符(注意,这是一种反向逻辑):

(除非您正在使用的函数在默认情况下对整个模式使用正则表达式,否则您可以删除线锚的开头和结尾)

如果您希望正则表达式更加严格(尽管我认为这在这里不太实际),您可以使用类似的东西

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

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

这取决于您使用的正则表达式的风格,但如果您有一个支持lookaheads的正则表达式,则可以使用以下表达式:

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

它不会捕获任何内容,但如果使用的字母都是大写,它将返回false,如果使用的字母都是小写,它将返回true。

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

演示。

以下正则表达式

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

将在行首或前面的句号之间找到任何只包含大写字母和空格的行。

只需查找
[a-z]
。。。如果匹配,你的判决通过。如果不是,则全是大写字母(或标点符号)。

您似乎想要检测单词中嵌套了大写字母的句子,例如:hEllo,再见,word;这是任何一个在小写之后有大写字母的单词,或者任何两个或两个以上大写字母并排的单词

  • 大写后小写

    [a-z][a-z]

  • 两个或多个成对大写字母

    [A-Z][A-Z]

将它们与交替结合起来

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

您正在使用哪种语言/工具..如果是winforms,您可以使用
按键
事件来阻止大写文本..您不需要正则表达式,除非没有其他方法,如果您在问题中添加了什么风格的正则表达式/您正在使用的语言或库,这将有所帮助。许多regex风格支持不同的函数,因此一个答案可能不适用于所有语言。但这是一个很好的问题,我在其他任何地方都找不到答案。澄清一下:您正在寻找一种方法来匹配句子中的字母字符是否完全是大写的?只需去掉第一个
^
,然后使用
[a-z]
。如果匹配的话,这个句子就不全是大写的。你只在乎避免大写字母[A-Z]和允许小写字母[A-Z]吗?你想允许数字、标点符号等,还是只允许有限范围的字符?我相信这可以变得更简洁,感觉可能更短,但效果更好。我认为这会匹配任何正常结构的句子(标点符号等),其中每个字母字符都是大写的。我想可能是为了打击垃圾邮件?@JonM不保留与您匹配的字符串,您只需删除与我匹配的字符串,结果将完全相同;)有标点符号的情况如何?你可能会有一个句子被认为是“全大写”,但也包括标点符号和数字等。如果没有更多的上下文,很难说它是否完全适合你的需要,但因为你的问题很模糊(它甚至没有告诉我们你在用哪种语言),也许你可以从这里开始,或者发布一个更完整的问题。
[a-z]
与第一个问题相同,不是吗?@beroe是的,在大多数情况下,这可以工作,但是有一些函数可以根据整个字符串测试正则表达式模式(或默认情况下锚定模式),例如在python中,
re.match(r'[a-z]',Abc')
将无法匹配,但
re.search(r'[a-z]“,”Abc“
将找到匹配项,因此我使用了
*
,这样无论函数如何,它都可以工作。当然,我完全支持更简单(est)的解决方案:)我明白了。鉴于问题的详细程度,很难/不可能说出需要什么。
/*([a-z][A-Z]|[A-Z][A-Z])/