如何修改正则表达式使其支持两种包名格式?
解决Lint包名检查正则支持带点字符串的问题
你的需求完全可以实现,只需要对原有正则做简单修改,让它支持多个合法包段用点分隔的情况:
修改后的正则表达式
[a-z]+([A-Za-z0-9_]*)*(\.[a-z]+([A-Za-z0-9_]*)*)*
规则说明
- 原有正则
[a-z]+([A-Za-z0-9_]*)*负责匹配单个合法包段(比如abc、abc_def),要求以小写字母开头,后续可跟大小写字母、数字或下划线 - 新增的
(\.[a-z]+([A-Za-z0-9_]*)*)*部分,表示可以重复添加“点+合法包段”的组合,次数不限(0次或多次),这样就能匹配com.google、com.example.my_app这类带点的包名 - 若需要严格匹配整个字符串(避免部分匹配),可以给正则加上首尾锚定:
^[a-z]+([A-Za-z0-9_]*)*(\.[a-z]+([A-Za-z0-9_]*)*)*$
匹配示例
- 保留原支持的字符串:
abc_def、myTest123 - 新增支持的带点字符串:
com.google、org.example.app_v2
内容的提问来源于stack exchange,提问作者Zhou Haibo
相关产品推荐
相关产品推荐

