使用正则表达式匹配除=以外的任何字符

时间:2012-03-19 13:14:47

标签: java regex

我正在尝试编写一个String验证来匹配除=。

之外的任何字符(常规,数字和特殊)

这是我写的 -

    String patternString = "[[^=][\\w\\s\\W]]*";
    Pattern p = Pattern.compile(patternString);
    Matcher m = p.matcher(str);

    if(m.matches())
        System.out.println("matches");
    else
        System.out.println("does not");

但是,它与输入字符串“2009-09 / 09 12:23:12.5 =”匹配模式。

如何从模式字符串中排除=(或任何其他字符)?

4 个答案:

答案 0 :(得分:40)

如果唯一禁止的字符是等号,则[^=]*之类的字符应该有用。

[^...]是一个否定的字符类;它匹配单个字符,除了方括号中的列表之外的任何字符。 *重复表达式零次或多次。

答案 1 :(得分:7)

首先,您不需要正则表达式。只需致电contains

if(str.contains("="))
    System.out.println("does not");
else
    System.out.println("matches");

您正在寻找的正确正则表达式只是

String patternString = "[^=]*";

答案 2 :(得分:4)

如果您只想检查“=”的出现,为什么不使用String indexOf()方法?

if str.indexOf('=')  //...

答案 3 :(得分:1)

如果您的目标是在字符串中没有任何=字符,请尝试以下

String patternString = "[^=]*";