Search code examples
javaregexvalidation

Regex to check string contains only Hex characters


I have never done regex before, and I have seen they are very useful for working with strings. I saw a few tutorials (for example) but I still cannot understand how to make a simple Java regex check for hexadecimal characters in a string.

The user will input in the text box something like: 0123456789ABCDEF and I would like to know that the input was correct otherwise if something like XTYSPG456789ABCDEF when return false.

Is it possible to do that with a regex or did I misunderstand how they work?


Solution

  • Yes, you can do that with a regular expression:

    ^[0-9A-F]+$
    

    Explanation:

    ^            Start of line.
    [0-9A-F]     Character class: Any character in 0 to 9, or in A to F.
    +            Quantifier: One or more of the above.
    $            End of line.
    

    To use this regular expression in Java you can for example call the matches method on a String:

    boolean isHex = s.matches("[0-9A-F]+");
    

    Note that matches finds only an exact match so you don't need the start and end of line anchors in this case. See it working online: ideone

    You may also want to allow both upper and lowercase A-F, in which case you can use this regular expression:

    ^[0-9A-Fa-f]+$