2010-04-29 2 views
0

Есть ли способ найти, какой символ ввода не получается шаблон регулярного выражения.Проверка правильности регулярных выражений javascript

Для примера: рассмотрите [A-Za-z \ s. &] допустимо, но пользователь вводит «test/string», где «/» делает недействительным ввод. Как найти который не регулярное выражение (в нашем случае «/»)

+0

все ответы хороши. RoToRa отлично соответствует моей потребности. thank u – ArK

ответ

2

Вы можете удалить действительные символы, и вы будете иметь строку из недопустимых:

var invalid = "test/string".replace(/[A-Za-z\s.&]/g,""); // results in "/" 
1

Чтобы выяснить, какие символы не удается, разделить его с /[A-Za-z\s.&]+/, вы получите недопустимые символы список

"test/string".split(/[A-Za-z\s.&]+/).join('') 
/

Для проверки имени пользователя является действительным или нет, вы могли бы просто использовать привязки^и $.

/^[A-Za-z\s.&]+$/ 
+0

Я думаю, что он получил эту часть, но он хочет узнать, почему * матч не удался, я. е. на каком характере. –

+0

Спасибо @Tim, обновлено – YOU

1

Просто отрицайте свой класс персонажей и узнайте, какой символ (-ы) соответствует.

[^A-Za-z\s.&] 

будет соответствовать / в test/string. Таким образом, в целом вы получаете

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 
} 
Смежные вопросы