ArK
ArK

Reputation: 21068

javascript regex validation

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

Answers (3)

YOU
YOU

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

RoToRa
RoToRa

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

Tim Pietzcker
Tim Pietzcker

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

Related Questions