【问题标题】:jquery regular expression for a text area文本区域的jquery正则表达式
【发布时间】:2009-12-20 06:20:04
【问题描述】:

我有一个正则表达式,它返回我们和加拿大的邮政编码,如下所示。

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

我需要在 java 脚本或 jquery 中执行此操作。只能提取这些值的应用程序。例如,某人可以简单地将文档粘贴到文本区域中,单击一个按钮,然后将有效的美国和加拿大邮政编码提取到一个数组中以供进一步处理。我已经查看但找不到符合此要求的内容。

我尝试了 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

idTextArea 的 textarea 输入如下。

"12345 ahdh 23, 6789, 65432"

我只想将 12345 和 65432 返回到数组中。

我完全被难住了,非常感谢任何帮助。

【问题讨论】:

  • 你想要达到的目标也可以在没有那个 jQuery 插件的情况下完成。使用文本区域的事件onchange 获取其内容,并使用正则表达式对其进行解析。

标签: jquery regex textarea


【解决方案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());

您将获得一个包含与您的正则表达式匹配的值的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多