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?
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]+$
May be you want to use the POSIX character class \p{XDigit}
, so:
^\p{XDigit}+$
Additionally, if you plan to use the regular expression very often, it is recommended to use a constant in order to avoid recompile it each time, e.g.:
private static final Pattern REGEX_PATTERN = Pattern.compile("^\\p{XDigit}+$"); public static void main(String[] args) { String input = "0123456789ABCDEF"; System.out.println( REGEX_PATTERN.matcher(input).matches() ); // prints "true" }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With