Регулярное выражение jquery для текстовой области - PullRequest
0 голосов
/ 20 декабря 2009

У меня есть регулярное выражение, которое возвращает почтовые индексы США и Канады следующим образом.

((?<US>\d{5})|(?<Can>\b[A-Z-[DFIOQUWZ]]\d[A-Z-[DFIOQU]]\ +\d[A-Z-[DFIOQU]]\d\b))

Мне нужно сделать это в java-скрипте или jquery. Приложение, которое может извлечь только эти значения. Например, кто-то может просто вставить документ в текстовое поле, нажать кнопку и извлечь действительные почтовые индексы США и Канады в массив для дальнейшей обработки. Я посмотрел, но не могу найти то, что соответствует этому требованию.

Я безуспешно пытался использовать фильтр RegEx от Waldek Mastykarz.

jQuery.extend(
    jQuery.expr[':'], {
        regex: function(a, i, m, r) {
            var r = new RegExp(m[3], 'i');
            return r.test(jQuery(a).text());
        }
    }
);


$("#idTextArea:regex('\d{5}')") US only

$("#idTextArea:regex('\\d{5}')") also tried this and host of others

где ввод текстовой области для idTextArea следующий.

"12345 ahdh 23, 6789, 65432"

Я хочу вернуть только 12345 и 65432 в массив.

Я в полном недоумении, любая помощь очень ценится.

1 Ответ

1 голос
/ 20 декабря 2009

Вам нужно использовать только метод String.match, я также упростил ваше регулярное выражение:

function validPostalCodes(input) {
  var r = /(\d{5}|(\b[A-Z-DFIOQUWZ]\d[A-Z-DFIOQU]\ +\d[A-Z-DFIOQU]\d\b))/g;
  return input.match(r);
}

Затем вы можете использовать вышеуказанную функцию со своим значением textarea:

var array = validPostalCodes($("#idTextArea").val());

И вы получите массив, содержащий значения, соответствующие вашему RegExp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...