my valid string should be either "1234" or " 1234"
allow one or zero space at the beginning
then followed by any number of digits only
so what should be the regular expression for this ?
Advertisement
Answer
You can use this:
^ ?d+$
which is easier to read like this:
^[ ]?d+$
See demo.
To test if you have a match, you can do (for instance):
if (subjectString.matches("[ ]?\d+")) {
// It matched!
}
else { // nah, it didn't match... }
Here you don’t need the ^ and $ anchors, because the matches method looks for an exact match.
Explanation
- The
^anchor asserts that we are at the beginning of the string. Depending on the method used, these anchors may not be needed. [ ]?matches zero or one space. The brackets are not needed, but they make it easier to read. You can remove them. Do not usesthere as it also matches newlines and tabs.d+matches one or more digits- The
$anchor asserts that we are at the end of the string