如何判断字符串中每个单词首字母大写且其余字符均为小写
正则校验规则修正方案
原正则问题分析
你使用的^[A-Z][a-z ']*$仅要求字符串的第一个字符为大写,后续字符只要是小写字母、空格、单引号即可,没有对每个单词、以及单引号分隔的词段的首字母做大写校验,也无法限制词段中间出现大写字母,因此无法满足需求。
正确正则表达式
^[A-Z][a-z]*(?:[' ][A-Z][a-z]*)*$
规则说明
^匹配字符串起始位置[A-Z][a-z]*要求第一个词段的首字母必须为大写,后续字符仅允许小写字母(?:[' ][A-Z][a-z]*)*非捕获组,匹配0个或多个后续词段:每个词段前必须有1个分隔符(空格或者单引号),词段首字母必须大写,后续字符仅允许小写字母$匹配字符串结束位置
示例验证
用你提供的三个用例测试效果如下:
My Lady D'Arbanville完全匹配,返回TrueMy Lady d'arbanville单引号后词段首字母为小写,匹配失败,返回FalseMy LADY D'Arbanville第二个词段中间存在大写字母,匹配失败,返回False
内容的提问来源于stack exchange,提问作者Ryan Davidson
相关产品推荐
相关产品推荐

