regex - 正则表达式仅匹配一个大写字母
问题描述
如果超过不匹配,我需要匹配(必须至少只有一个大写字母)。
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}
但它没有
解决方案
如果您不需要任何小写字母,则可以使用:
^[a-z]*[A-Z][a-z]*$
这匹配任意数量的小写字母,后跟一个大写字母,然后是任意数量的小写字母。
如果您至少需要一个小写字母,则可以使用交替处理两种情况,其中小写字母在左侧是可选的,右侧是必需的,或者是右侧是可选的,左侧是必需的:
^(?:[a-z]*[A-Z][a-z]+|[a-z]+[A-Z][a-z]*)$
推荐阅读
- javascript - 如何在 sap.m.Datepicker 中仅启用两天并禁用其余天?
- c# - VS 2017 - 需要修复 `cw` 代码片段输出
- javascript - 如何将一维数组变成二维数组,其中父母可以深入两层以上?
- reactjs - 在反应中同时访问两个数组
- python - 需要使用 scrapy 下载给定 URL 中的所有 .pdf 文件
- c# - 配置文件不起作用的 dotnet 发布 cmd
- web2py - 如何从从日期计算中获取的值中剥离并去除 (... days, 0:00:00)
- regex - 如何仅查找包含两个连续元音的行
- rails-api - 包含符合 JSON API 规范的非关联对象响应
- sql - 如何在 SQL Server 中使用变量删除行?