Red*_*nda 7 java regex android
美好的一天!我有一个正则表达式模式:
Pattern p = Pattern.compile("^[a-zA-Z_\\$][\\w\\$]*(?:\\.[a-zA-Z_\\$][\\w\\$]*)*$");
Run Code Online (Sandbox Code Playgroud)
它应该告诉我java/android包名是否合法.它在桌面java上工作正常,但它在Android设备上失败
可以说我有一些包名:
". .", "?????????????", "com.mxtech.ffmpeg.v7_neon", ...
Run Code Online (Sandbox Code Playgroud)
测试应该显示唯一有效的包是"com.mxtech.ffmpeg.v7_neon",但也显示测试字符串
" _?????????????\_ "
Run Code Online (Sandbox Code Playgroud)
已验证.为什么?(这是西里尔文.)
Android和桌面实现有什么区别?
问题是由于\wAndroid正则表达式具有Unicode感知.
替换[A-Za-z0-9_]为仅匹配ASCII字母,数字和下划线.
请注意,这些内置类不仅涵盖传统的ASCII范围.例如,
\w等同于字符类[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}].如果您确实只想匹配ASCII字符,请指定所需的显式字符.
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |