模式不允许包含数字的单词?

我写了一个程序,让我添加类别,因为它在第一个位置有特殊字符和数字的一些问题,我做了一个正则表达式过滤器,它应该只处理特殊字符。但是,如果我现在使用包含数字的单词,则该方法也会因某种原因返回true。

private boolean containsSpecChar () {
  Pattern pattern = Pattern.compile("[a-zA-Z0-9]");
  Pattern p = Pattern.compile("[0-9a-zA-Z]");
  String a = null;
  a = txtInKategorieName.getText();
  Matcher match= pattern.matcher(a);
  Matcher m = p.matcher(a);
  if (
  match.matches() || m.matches()
  )
  {
    return false;
  }
  else
  {
    return true;
  }}

我希望能够使用包含数字的单词。谢谢


偶然的你
浏览 429回答 3
3回答

烙印99

[a-zA-Z0-9]并且[0-9a-zA-Z]是一回事。该[xxx]正则表达式模式是一个字符类,它相匹配的单个字符。如果要匹配这些字符中的一个或多个,则需要在末尾添加+ 量词:"[a-zA-Z0-9]+"

交互式爱情

这是.matches方式:public static boolean containsSpecChar () {   Pattern pattern = Pattern.compile("[a-zA-Z0-9]+");   String a = txtInKategorieName.getText();   Matcher match = pattern.matcher(a);   return !match.matches();}这是.find方式:public static boolean containsSpecChar () {   Pattern pattern = Pattern.compile("[^a-zA-Z0-9]");   String a = txtInKategorieName.getText();   Matcher match = pattern.matcher(a);   return match.find();}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java