我正在尝试对字符串使用模式检查,并且由于某种原因它说的是不匹配的字符串,请执行..
代码:
private static final Pattern VALID_TOKEN = Pattern.compile("^[a-zA-Z0-9\\{\\}\\[\\].+-/=><\\\\*]*$");
System.out.println(VALID_TOKEN.matcher(token).matches());
示例:
"123" = true
"1,3" = true // Should NOT BE TRUE
"123*123" = true
"123*^123" = false
以上所有示例都是正确的,除了“1,3”外,该模式不应包含COMMA。有没有人有任何想法?
答案 0 :(得分:2)
你需要在
中逃脱破折号+-/
否则,它被解释为从'+'
到'/'
的范围 - 包含'+'
,','
,'-'
的范围。 '.'
和'/'
。
private static final Pattern VALID_TOKEN = Pattern.compile("^[a-zA-Z0-9\\{\\}\\[\\].+\\-/=><\\\\*]*$");
// Here ------------------------------------------------^^
或者,您可以将短划线移动到字符类的末尾(即将其放在结束]
之前)。