检查java字符串中的^字符

时间:2012-02-07 19:41:48

标签: java regex

我想检查字符串以查看它是否包含^符号,以及它是否向用户显示消息。

由于

Pattern p = Pattern.compile("[a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("StringGoesHere");
boolean b = m.find();

if (b){
   System.out.println("bad");
} else {
   System.out.println("fine");
}

4 个答案:

答案 0 :(得分:15)

正则表达式可能有点矫枉过正,只需使用String.contains()

即可

如果您渴望使用正则表达式,请使用"\\^"\\将提供单个\,这违反了^字符的特殊含义。< / p>

答案 1 :(得分:10)

为什么不

String str = "StringGoesHere";
if( str.indexOf('^') != -1 )
{
    System.out.println( "bad" );
}
else
{
    System.out.println("fine");
}

答案 2 :(得分:1)

Pattern p = Pattern.compile("\\^");

答案 3 :(得分:1)

实际上,最简单的答案是:不要使用正则表达式,只搜索字符本身。

答案越长:查看转义上正则表达式语法的详细信息。

在charcter类中,^仅在第一个符号时才是特殊的。因此[a-z^]将匹配a-z ^中的任何一个,而[^a-z]则匹配除a-z以外的所有内容(自^起因为第一个字是否定的。)

在字符类之外,^匹配行的开头,除非您使用\将其转义。对于Java内联字符串,您需要将其写为"\\^"