求匹配特定单词格式的正则表达式:首字母可大小写,其余需小写
正则表达式匹配需求:每个单词首字母后无大写字母
尊敬的正则表达式专家:
我正尝试实现一条正则匹配规则,但遗憾的是未能成功。
文字描述规则:
- 字符串中的每个单词必须保证首字母之后无大写字母。首字母可以大写,也可以不大写。
匹配整个字符串的示例:
- "Jean Luke Smith"
- "Jean Smith"
- "Jean"
- "jean luke smith"
- "jean smith"
- "jean"
- "Jean luke smith"
- "jean Luke smith"
- "jean luke Smith"
不匹配整个字符串的示例(加粗部分为不匹配原因):
- "JEan lukKe smiTH"
- "JEAN SMith"
- "jEAn"
- "jeAn luke smith"
- "JeaN smIth"
- "jEAn"
- "Jean luke sMith"
- "jean LuKe smith"
我尝试过的写法:
\b[A-Z]{0,1}[a-z]* \b[A-Z]{0,1}[a-z]*\b \b(?![A-Z]+\b)[a-zA-Z0-9_{}]*\b \b(?![A-Z]+\b)[A-Z]{0,1}[a-z]*
解决方案
要匹配整个符合规则的字符串,需确保每一个单词都满足「首字母可选大写,后续全为小写字母」的要求,同时覆盖单单词和多单词场景。
最终正则表达式
^([A-Z]?[a-z]+)( [A-Z]?[a-z]+)*$
规则拆解
^:锚定字符串起始位置,确保从开头开始匹配[A-Z]?[a-z]+:匹配单个合法单词[A-Z]?:首字母可选大写[a-z]+:后续必须是一个或多个小写字母,既保证首字母后无大写字符,也确保单词不为空
( [A-Z]?[a-z]+)*:匹配零个或多个「空格+合法单词」的组合,支持多单词场景$:锚定字符串结束位置,确保整个字符串都符合规则
验证说明
该正则可完美匹配你列出的所有合规示例,同时会排除首字母后出现大写字母的字符串,完全符合规则描述。
内容的提问来源于stack exchange,提问作者Christian Ringele
相关产品推荐
相关产品推荐

