I have a string that I want to make sure that the format is always a +
followed by digits.
The following would work:
String parsed = inputString.replaceAll("[^0-9]+", "");
if(inputString.charAt(0) == '+') {
result = "+" + parsed;
}
else {
result = parsed;
}
But is there a way to have a regex in the replaceAll
that would keep the +
(if exists) in the beginning of the string and replace all non digits in the first line?
What about just
Java string:
Demo at regex101.com
\D
matches a character that is not a digit[^0-9]
(?!^)
using a negative lookahead to check, if it is not the initial charactertry this
1- This will allow negative and positive number and will match app special char except - and + at first position.
2- If you only want to allow + at first position
You can use this expression:
The idea is to replace any non-digit when it is not the initial character of the string (that's the
(?<!^)[^0-9]
part with a lookbehind) or any character that is not a digit or plus that is the initial character of the string (the^[^0-9+]
part).Demo.
The following statement with the given regex would do the job:
Yes you can use this kind of replacement:
if present and before the first digit in the string, the
+
character is captured in group 1. For example:dfd+sdfd12+sdf12
returns+1212
(the second+
is removed since its position is after the first digit).