Issue
Hey I need to bypass the validation for substring whiteList in the string str but the rest of the string needs to be validated for the special characters '<', '>', '$', '#', '@'.
Assuming that substring is not repeated anywhere else in the main string.
This is the main string
String str = "blah blah blah X has paid $8,894 to the shop owner blah blah blah"
This is the sub string
"String whiteList = "x has paid $8,894 to the shop owner"
;
current validation for the main string
boolean specialChar = Pattern.compile("<|>|\\$|#|@", Pattern.CASE_INSENSITIVE).matcher(str).find();
The substring whiteList contains $ which should not be validated and should return false.
I am looking for a solution using regular expression if its possible. Any help would be greatly appreciated. Thanks~
Solution
Just go around it:
String stringToCheck;
int pos = str.indexOf(whiteList);
if (pos >= 0) {
stringToCheck =
str.substring(0, pos) + str.substring(pos + whiteList.length());
} else {
stringToCheck = str;
}
boolean specialChar =
Pattern.compile("[<>$#@]").matcher(stringToCheck).find();
Answered By - VGR
Answer Checked By - Marie Seifert (JavaFixing Admin)