【问题标题】:How can I use preg_match in jQuery?如何在 jQuery 中使用 preg_match?
【发布时间】:2011-08-27 06:01:35
【问题描述】:

我可以在 jQuery 中使用 preg_match 来验证电话号码吗?这是我的代码不起作用:

if (!preg_match("/^[0-9]{3}-|\s[0-9]{3}-|\s[0-9]{4}$/", phone.val() ))  {
            phone.addClass("needsfilled");
            phone.val(phonerror);
        }

HTML <input id="phone" type="text" value="" name="phone" />

【问题讨论】:

标签: javascript jquery phpjs


【解决方案1】:

Javascript 包含一个正则表达式引擎,可通过string.match()string.replace()string.split() 函数访问。

例如:

var mystring = "this is a sentence";
mystring = mystring.replace(/sentence/,'string');

var matches = mystring.match(/\b\w+\b/);

这应该为您提供与preg_match() 基本相同的功能。

所以要与您的问题中的 preg_match 进行相同的验证:

if(!phone.val().match(/^[0-9]{3}-|\s[0-9]{3}-|\s[0-9]{4}$/)) {
     phone.addClass("needsfilled");
     phone.val(phonerror);
}

如果你绝对坚持使用一个名为preg_match() 的函数,它的工作原理与 PHP 版本完全相同,那么有一个名为 PHPJS 的项目,旨在用 Javascript 实现 PHP 函数。快速浏览一下他们的网站会发现,虽然他们目前还没有完全工作的 preg_match() 实现,但他们有一个您可能想要查看的 unfinished implementation。但坦率地说,内置的 Javascript .match() 函数应该绰绰有余。

【讨论】:

  • 如果我输入任何错误的电话号码或号码和文本,则使用此代码,然后我不会收到任何我不想要的错误消息
  • @Mary - 我没有将! 放在表达式的前面,所以当表达式匹配而不是不匹配时,它会进入if()。但它的目的是作为有关如何使用 .match() 函数的示例代码,而不是完整的复制+粘贴解决方案。但我已将答案编辑为更接近您想要做的事情。
  • @Mary - 顺便说一下,您知道,您的电话号码正则表达式对于美国以外的任何人都将失败。不确定您的网站的用途,但如果您期待任何外国用户,您将需要使您的正则表达式更加宽松。
【解决方案2】:

要使用 PHP 函数,您必须向服务器发出 HTTP 请求(使用您想要测试的任何数据),然后解析响应。

最好使用JavaScript's native regular expression functionality

【讨论】:

    【解决方案3】:

    RegExp.exec(string) 可以工作。

    试试这个:

    var pattern= "/your pattern/";
    var result = pattern.exec ( $("#phone").val() );
    // true if match
    

    源代码:http://javascriptkit.com/javatutors/redev3.shtml

    【讨论】:

      【解决方案4】:

      您应该使用 String 对象的 match 函数,而不是使用 PHP 函数 preg_match。有关使用匹配功能的信息,请参阅Mozilla docs

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-05
        • 2010-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多