android - 正则表达式匹配Android包名

标签 android regex

如何检查字符串是否是有效的 Android 包名称?

最佳答案

包属性的 AndroidManifest 文档中描述了一个有效的 Android 包名称:

The name should be unique. The name may contain uppercase or lowercase letters ('A' through 'Z'), numbers, and underscores ('_'). However, individual package name parts may only start with letters.



见:https://developer.android.com/guide/topics/manifest/manifest-element.html#package

以下正则表达式将匹配一个有效的 Android 包名称:
^([A-Za-z]{1}[A-Za-z\d_]*\.)+[A-Za-z][A-Za-z\d_]*$

示例用法:
String regex = "^([A-Za-z]{1}[A-Za-z\\d_]*\\.)+[A-Za-z][A-Za-z\\d_]*$";
List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
for (PackageInfo packageInfo : packages) {
  if (packageInfo.packageName.matches(regex)) {
    // valid package name, of course.
  }
}

有关正则表达式的详细说明,请参阅:https://regex101.com/r/EAod0W/1

关于android - 正则表达式匹配Android包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772067/

相关文章:

python - 如何测试正则表达式匹配

sql - 用于提取 SQL where 子句的正则表达式

java - 匹配固定长度的正则表达式并添加尾随空格

android - 如何最好使用 xml 为 tabwidget 按钮设置禁用状态的样式

android - Kotlin DateTimeformat 返回错误的月份

android - 如何将我的应用程序的所有声音静音?

jQuery DataTables - fnFilter 不适用于正则表达式

android - 在父 View 的两侧放置两个宽度为 wrap_content 的多行 TextView

java - 如何通过互联网获取地理数据?

regex - 初学者正则表达式 : Multiple Replaces