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 f开发者_运维技巧ind who fails regex (our case '/')
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 "/"
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
}
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.&]+$/
精彩评论