我正在寻找一个正则表达式来测试一个字符串是否同时包含大写和小写字母。 我在这方面发现了一些线索,但他们建议使用前向查找,但我似乎无法使其适合我的其余表达,我正在寻找测试:
<b>James Smith (ecg)</b>
但排除这个((ecg)总是小写):
<b>JAMES SMITH (ecg)</b>
到目前为止我有这个:
<b>[A-z\s\W]+(\(ecg\))?\W?<\/b>
这有效,但如果全部大写或全部小写也会匹配。 我试过了,但它仍然匹配所有内容:
<b>(.*(?=.*[a-z])(?=.*[A-Z]).*)[A-z\s\W]+(\(ecg\))?\W?<\/b>
最佳答案
你可以使用
<b>(?=[A-Z\s]*[a-z])(?=[a-z\s]*[A-Z])[\sA-Za-z]*(?:\(ecg\))?<\/b>
参见 regex demo
详情
-
<b>
- 一个<b>
正文 -
(?=[A-Z\s]*[a-z])
- 在0个或多个大写字母或空格后,必须至少有一个小写字母 -
(?=[a-z\s]*[A-Z])
- 在0个或多个小写字母或空格后,必须至少有一个大写字母 -
[\sA-Za-z]*
- 零个或多个字母/空格 -
(?:\(ecg\))?
- 一个可选的(ecg)
正文 -
<\/b>
- 一个</b>
文本。
关于用于测试字符串是否同时包含大写和小写字母的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64699233/