Java android中正则表达式的firstname和lastname验证程序

Java android中正则表达式的firstname和lastname验证程序,java,regex,validation,Java,Regex,Validation,我无法通过此正则表达式验证名称: 公共静态布尔验证名称(上下文,字符串txt){ 字符串regx=“():@$%&+\*=~^`',.:;!?/\{}\[]0123456789*$”; Pattern=Pattern.compile(regx,Pattern.CASE\u不区分大小写); Matcher Matcher=pattern.Matcher(txt); 返回matcher.find(); } 启动测试时,会引发异常: java.lang.RuntimeException:无法启动活动

我无法通过此正则表达式验证名称:

公共静态布尔验证名称(上下文,字符串txt){
字符串regx=“():@$%&+\*=~^`',.:;!?/\{}\[]0123456789*$”;
Pattern=Pattern.compile(regx,Pattern.CASE\u不区分大小写);
Matcher Matcher=pattern.Matcher(txt);
返回matcher.find();
}
启动测试时,会引发异常:

java.lang.RuntimeException:无法启动活动
组件信息{ma.altensoftwareawards.mbo/ma.altensoftwareawards.mbo.activities.SplashActivity}:
java.util.regex.PatternSyntaxException:regexp模式中的语法错误
接近指数28:
():@#$%&_+\*=~^`“‘,.:;!?/\{}\[\]0123456789*$

恰好在
[

上,java.util.regex.PatternSyntaxException表示您的正则表达式不正确。似乎您正在尝试查看名称中是否有任何非法字符。这样做更容易:

Pattern pattern = Pattern.compile("[^a-zA-Z]");
Matcher matcher = pattern.matcher(txt);
return matcher.find();
这匹配任何非字母表,而不是所有的胡言乱语

希望这有帮助

编辑: 根据OP的要求,以下是它的外观(读者,如果您对正则表达式的外观没有限制,请参阅上面的部分):

String regex = "[():@#$%&_+\\*=~^`“‘,.:;!?/\\{}\\[\\]<>0123456789*$]+";
String regex=“[():@$%&+\*=~^`',.:;!?/\{\\\\\\\[\\]0123456789*$]+”;

然后您可以编译它。这是您需要的工作正则表达式。

您需要转义反斜杠(使用“\\”而不仅仅是“\”)。不管怎样,你的正则表达式似乎是错误的。你想匹配什么?谢谢你的帮助,我正在尝试匹配一个名称。我用'\\'替换了'\\',同样的问题是显示+user2934536请尝试我的解决方案。我想了很多:)例如,要匹配我的名称,你需要一个看起来像“Dima”的正则表达式…但这可能不是它,对吗?我的意思是你试图与你的正则表达式匹配的是什么样的模式,因为你在问题中写的正则表达式没有任何意义。我真的怀疑它是否符合你的要求。这匹配所有不以字母开头的字符串。我怀疑这是OP想要的。这个解决方案很好,但我有若要使用此正则表达式():@#$%&&+*=~^`',.:;?/\{}[]0123456789*$+Dima不是“不以字母开头”而是“不包含字母”。请自己尝试。@Programmer不是“不包含字母”,而是“包含非字母”:)+Dima是的,这与OP的问题相匹配:-)