首页 > 解决方案 > 正则表达式测试字符串是否同时包含大写和小写字母

问题描述

我正在寻找一个正则表达式来测试一个字符串是否同时包含大写和小写字母。我在这方面找到了一些线程,但他们建议使用正向查找,但我似乎无法使其与我的其他表达方式相匹配,我正在寻找测试:

<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>

标签: regex

解决方案


您可以使用

<b>(?=[A-Z\s]*[a-z])(?=[a-z\s]*[A-Z])[\sA-Za-z]*(?:\(ecg\))?<\/b>

查看正则表达式演示

细节

  • <b>- 一段<b>文字
  • (?=[A-Z\s]*[a-z])- 在 0 个或多个大写字母或空格之后,必须至少有一个小写字母
  • (?=[a-z\s]*[A-Z])- 在 0 个或多个小写字母或空格之后,必须至少有一个大写字母
  • [\sA-Za-z]*- 零个或多个字母/空格
  • (?:\(ecg\))?- 可选(ecg)文本
  • <\/b>- 一段</b>文字。

推荐阅读