如果字符串值包含不同的字符,而不是数字[0-9]、连字符(-)、分号(;)或感叹号(!),我会抛出一个异常。
例如,这是一个完全正确的字符串: 1;3;5-9;!12-14
但这个不是: 1;3abc;5~9;?12*41
我尝试使用下面的代码,但总是失败:
String values = "1;3;5-9;!12-14"
Pattern pattern = Pattern.compile("[\\d*]|[\\;]|[\\-]|[\\!]");
if (!pattern.matcher(values).matches()) {
throw new Exception();
}发布于 2018-08-14 04:08:17
您的正则表达式[\\d*]|[\\;]|[\\-]|[\\!]使用了4次character class,它将匹配单个字符类中的字符。
您可以将它们都放在一个字符类中,断言字符串的开始^和结束$,然后重复一次或多次:
https://stackoverflow.com/questions/51829825
复制相似问题