gpt4 book ai didi

android - 使用正则表达式 android 在过滤器名称中出错

转载 作者:行者123 更新时间:2023-11-30 02:04:25 30 4
gpt4 key购买 nike

我会允许用户输入姓名,只允许他们使用“a 到 z、A 到 Z、0 到 9、逗号、空格、下划线、破折号”这个字符。这是我的代码...

Pattern pattern_checkName = Pattern.compile("^[a-zA-Z0-9_-,//s//.]{3,}$");
Matcher matcher = pattern_checkName.matcher(para);
return matcher.matches();

我得到了这个错误,正则表达式语法错误:

06-19 14:27:29.653: E/AndroidRuntime(7735): java.util.regex.PatternSyntaxException: In a character range [x-y], x is greater than y near index 
14:06-19 14:27:29.653: E/AndroidRuntime(7735): ^[a-zA-Z0-9_-,//s//.]{3,}$
06-19 14:27:29.653: E/AndroidRuntime(7735):
^
06-19 14:27:29.653: E/AndroidRuntime(7735): at java.util.regex.Pattern.compileImpl(Native Method)

06-19 14:27:29.653: E/AndroidRuntime(7735): at java.util.regex.Pattern.compile(Pattern.java:411)

06-19 14:27:29.653: E/AndroidRuntime(7735): at java.util.regex.Pattern.<init>(Pattern.java:394)

06-19 14:27:29.653: E/AndroidRuntime(7735): at java.util.regex.Pattern.compile(Pattern.java:381)

06-19 14:27:29.653: E/AndroidRuntime(7735): at com.elite.mm.util.Util.checkName(Util.java:103)

06-19 14:27:29.653: E/AndroidRuntime(7735): at com.elite.mm.ActivityRegister$1.onClick(ActivityRegister.java:89)

06-19 14:27:29.653: E/AndroidRuntime(7735): at android.view.View.performClick(View.java:4438)

06-19 14:27:29.653: E/AndroidRuntime(7735): at android.view.View$PerformClick.run(View.java:18422)

06-19 14:27:29.653: E/AndroidRuntime(7735): at android.os.Handler.handleCallback(Handler.java:733)

06-19 14:27:29.653: E/AndroidRuntime(7735): at android.os.Handler.dispatchMessage(Handler.java:95)

06-19 14:27:29.653: E/AndroidRuntime(7735): at android.os.Looper.loop(Looper.java:136)

06-19 14:27:29.653: E/AndroidRuntime(7735): at android.app.ActivityThread.main(ActivityThread.java:5001)

06-19 14:27:29.653: E/AndroidRuntime(7735): at java.lang.reflect.Method.invokeNative(Native Method)

06-19 14:27:29.653: E/AndroidRuntime(7735): at java.lang.reflect.Method.invoke(Method.java:515)

06-19 14:27:29.653: E/AndroidRuntime(7735): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-19 14:27:29.653: E/AndroidRuntime(7735): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)

06-19 14:27:29.653: E/AndroidRuntime(7735): at dalvik.system.NativeStart.main(Native Method)

非常感谢任何建议。谢谢

最佳答案

首先,当您在字符类中使用 - 时,您的正则表达式引擎会将其假定为一个文本范围,如果您想要匹配它的文字,您需要将它放在字符类结束。

此外,如果你想匹配空格,你需要 \s 这样你就可以使用下面的正则表达式:

"^[a-zA-Z0-9_,\s//.-]{3,}$"

并且更精确地代替 a-zA-Z0-9_ 你可以起诉 \w 匹配任何单词字符,并且使用空格而不是空格,如果你不想使用点你应该从你的字符类中删除它:

"^[\w, /-]{3,}$"

关于android - 使用正则表达式 android 在过滤器名称中出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30933133/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com