我使用正则表达式
r="[^A-Za-z0-9]+";
检测字符串是否有一个或多个字母和数字以外的字符;
然后我尝试了以下内容:
Pattern.compile(r).matcher(p).find();
我测试过:
! @ # $ % ^ & * ( ) + =- [ ] \ ' ; , . / { } | " : < > ? ~ _ `
大多数情况下,除了backsplash \和caret ^之外它都有效。
e.g。
String p = "abcAsd10^" (return false)
String p = "abcAsd10\\" (return false)
我想念的一切?
答案 0 :(得分:2)
以下代码在编译并运行时打印“Found:true”:
class T
{
public static void main (String [] args)
{
String thePattern = "[^A-Za-z0-9]+";
String theInput = "abskKel35^";
boolean isFound = Pattern.compile(thePattern).matcher(theInput).find();
System.out.println("Found: " + isFound);
}
}
不确定为什么会看到不同的结果......
答案 1 :(得分:1)
不应该是:
r="[^A-Za-z0-9]+";
在你的问题中你写了a_z(下划线)
答案 2 :(得分:1)
答案 3 :(得分:1)
当我在我的机器上运行此代码时,它会打印出真的..
String r="[^A-Za-z0-9]+";
String p = "abcAsd10\\" ;
Matcher m = Pattern.compile(r).matcher(p);
System.out.println(m.find());
真
答案 4 :(得分:0)
尝试将您的输入引用到匹配器中。
Pattern.quote(p)
答案 5 :(得分:0)
抱歉,我有
r="[^A-za-z0-9]+"; (with little "z", i.e. A-z).
导致返回“false”。但是为什么它与其他特殊字符一起工作,除了backsplash \和caret ^?
答案 6 :(得分:0)
简单地说:
p.matches(".*\\W.*"); //return true if contains one or more special character