2012-02-09 2 views
0

Я пытаюсь найти способ определить, какой символ в моей строке не соответствует регулярному выражению, есть ли способ сделать это в Javascript?Найти способ найти символы, которые не соответствуют Regex, это javascript

Я использую объект regex, и я смог определить, соответствует ли строка регулярному выражению, но я хотел бы пойти дальше, чтобы определить, почему строка не соответствует регулярному выражению.

любые мысли?

Это было то, что я в настоящее время ... я просто пытаюсь убедиться, что строка содержит только набор символов, найденный в следующем регулярном выражении ... и я хотел бы видеть, какой символ не совпадает.

Вот мой код:

var regexTest = new RegExp("^[0-9a-zA-Z\\!\\040\\@\\s\\#\\$\\%\\&\\*\\(\\)\\_\\+\\:\\\"\\<\\>\\?\\-\\=\\;\\'\\,\\.\\\\]+$",g); 

var bValid = regexTest.test(value); //this will check whether the value is valid ... 

Я попытался с помощью value = value.replace(regexTest,''), но не смог на самом деле отфильтровать символы.

+0

хороший вопрос .. – techfoobar

+0

Используйте форму! оператор –

+3

Я не думаю, что это действительно хорошо определено в целом. Какой символ в '" aababb "' не соответствует регулярному выражению '/^a * b * $ /'? Какой символ в '' aaaccc'' не соответствует регулярному выражению '/^a + b + c + $ /'? Какой символ в '' '' (т. Е. Пустая строка) не соответствует регулярному выражению '/ a + /'? –

ответ

2

Вы могли бы заменить все символы, которые сделать матч с '', оставив только те вещи, которые не соответствуют:

'abc123'.replace(/([a-z]+)/g, '') 
// "123" 
+0

Ах, вы имели в виду поймать непревзойденные условия. Извинения, я неправильно понял. Вышеупомянутая сортирует вашу проблему. –

+0

См. Мое редактирование. Этот код был не очень велик. – Blender

+0

Это, похоже, не очень хорошо работает - я отредактировал этот вопрос для большей ясности. – aggietech