Using Regex to Match Any Character Except =

I am trying to write a String validation to match any character (regular, digit and special) except =.

Here is what I have written -

    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");

But, it matches the input string "2009-09/09 12:23:12.5=" with the pattern.

How can I exclude = (or any other character, for that matter) from the pattern string?

2

4 Answers

If the only prohibited character is the equals sign, something like [^=]* should work.

[^...] is a negated character class; it matches a single character which is any character except one from the list between the square brackets. * repeats the expression zero or more times.

3

First of all, you don't need a regexp. Simply call contains:

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

The correct regexp you're looking for is just

String patternString = "[^=]*";
1

If your goal is to not have any = characters in your string, please try the following

String patternString = "[^=]*";

If you only want to check for occurence of "=" why don't you use the String indexOf() method?

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Robert Thorne

Robert Thorne

Automotive & Future Transportation Editor

Robert Thorne covers electric vehicle innovations, autonomous driving systems, global mobility trends, and automotive engineering developments.

Share this article
Twitter Facebook Pinterest