【发布时间】:2020-12-14 01:57:51
【问题描述】:
我正在尝试检查我的输入是否包含任何内容但 A-Z a-z , . ' - and whitespace。
我想这是一个简单的错误,因为我在正则表达式方面是个新手。
public class Test {
public static void main(String args[]) {
doesMatch(0,"Hello ', . - ");
doesMatch(1,"1Hello1");
doesMatch(2,"23123");
doesMatch(3,"§!$'##");
doesMatch(4,"pe33teramjd");
doesMatch(5,"3pe33teramjd");
doesMatch(6,"pe33teramjd3");
doesMatch(7,"yup py");
}
static void doesMatch(int number,String input){
System.out.println("Number: "+number+" | "+input.matches("[^A-Za-z,.'\\s-]"));
}
}
输出:
Number: 0 | false
Number: 1 | false
Number: 2 | false
Number: 3 | false
Number: 4 | false
Number: 5 | false
Number: 6 | false
Number: 7 | false
想要的输出:
Number: 0 | false
Number: 1 | true
Number: 2 | true
Number: 3 | true
Number: 4 | true
Number: 5 | true
Number: 6 | true
Number: 7 | false
【问题讨论】:
-
您的正则表达式只会匹配一个字符。
Pattern.compile(yourRegex).matcher(input).find()会在字符串中的任何位置找到它。