2009-12-20 2 views
0

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

((?<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 

где textarea input для idTextArea является следующим.

"12345 ahdh 23, 6789, 65432" 

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

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

+0

То, что вы пытаетесь достичь, может быть выполнено и без этого плагина jQuery. Используйте событие 'onchange' для текстовой области, чтобы получить его содержимое, и проанализируйте его с помощью регулярного выражения. – kiamlaluno

ответ

1

Вам только нужно использовать метод 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.

Смежные вопросы