Reputation: 21068
Is there any way to find which input character fails the regex pattern.
For ex: consider [A-Za-z\s.&] is only allowable but the user enter like "test/string" where '/' invalidates input. How to find who fails regex (our case '/')
Upvotes: 0
Views: 2068
Reputation: 123831
To find which characters fails, split it with /[A-Za-z\s.&]+/
, you will get invalid characters list
"test/string".split(/[A-Za-z\s.&]+/).join('')
/
To check username is valid or not, you could just use ^ and $ anchors.
/^[A-Za-z\s.&]+$/
Upvotes: 1
Reputation: 38400
You could remove the valid chars and you'll have a string of the invalid ones:
var invalid = "test/string".replace(/[A-Za-z\s.&]/g,""); // results in "/"
Upvotes: 2
Reputation: 336158
Just negate your character class and find out which character(s) match.
[^A-Za-z\s.&]
will match the /
in test/string
. So, altogether you get
if (/^[A-Za-z\s.&]+$/.test(subject)) {
// Successful match
} else {
result = subject.match(/[^A-Za-z\s.&]/g);
// result is an array that contains all the characters that failed the match
}
Upvotes: 1