首页 > 解决方案 > 正则表达式仅匹配一个大写字母

问题描述

如果超过不匹配,我需要匹配(必须至少只有一个大写字母)。

    Kitty   || Valid has one upper case letter  
    wiDivb  || Valid has one upper case letter
    ikBVu   || Invalid more than one upper case letter
    welcmw  || Invalid No upper case letter
    A       || Valid has one upper case letter  
    AA      || Invalid more than one upper case letter

我努力了 :

(?=.*[a-z])(?=.*[A-Z]{1})

但它匹配,即使它有多个大写字母,我只想要一个,所以我添加了{1}但它没有

标签: regex

解决方案


如果您不需要任何小写字母,则可以使用:

^[a-z]*[A-Z][a-z]*$

这匹配任意数量的小写字母,后跟一个大写字母,然后是任意数量的小写字母。

如果您至少需要一个小写字母,则可以使用交替处理两种情况,其中小写字母在左侧是可选的,右侧是必需的,或者是右侧是可选的,左侧是必需的:

^(?:[a-z]*[A-Z][a-z]+|[a-z]+[A-Z][a-z]*)$

推荐阅读