如何修改正则表达式,匹配'Mr'后仅含字母无数字的字符串
正则修改方案
修改后完整正则
^(Mr\s)([a-zA-Z\s]+)$
修改逻辑说明
你原写法中的.*会匹配任意长度的任意字符,因此会命中带数字、特殊符号的内容,不需要将[a-zA-Z]和.*结合使用,直接用限定范围的字符集规则替换.*即可:
[a-zA-Z\s]是自定义字符集,仅允许大小写英文字母和空格出现,天然过滤了你不需要的数字、横杠等字符- 后缀的
+表示至少匹配1次前面的字符集,避免Mr后为空的无效内容 - 末尾的
$保证字符串结束前所有字符都符合规则,避免后半段夹带不符合要求的内容
匹配效果验证
可正常匹配的目标内容
- Mr Charles Darwin
- Mr John Smith
会被过滤的内容
- Mr 1
- Mr 1-ta
- Mr 100
可选拓展
如果后续需要支持名字中带英文缩写点(例如Mr John A. Smith),只需把.加入字符集即可,修改后规则为:
^(Mr\s)([a-zA-Z\s.]+)$
内容的提问来源于stack exchange,提问作者Maxxx
相关产品推荐
相关产品推荐

