我有一个正则表达式,它返回我们和加拿大的zipcode如下。
((?<US>\d{5})|(?<Can>\b[A-Z-[DFIOQUWZ]]\d[A-Z-[DFIOQU]]\ +\d[A-Z-[DFIOQU]]\d\b))
我需要在java脚本或jquery中执行此操作。一个只能提取这些值的应用程序。例如,有人可以简单地将文档粘贴到textarea中,单击按钮并将有效的美国和加拿大邮政编码提取到数组中以供进一步处理。我看了但找不到符合这个要求的东西。
我试过没有运气的Waldek Mastykarz的RegEx过滤器。
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
其中idtaxtArea的textarea输入如下。
"12345 ahdh 23, 6789, 65432"
我想只将12345和65432返回到数组中。
我非常难过,非常感谢任何帮助。
答案 0 :(得分: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匹配的值的数组。