如何在 jQuery 中使用 preg_match?

Posted

技术标签:

【中文标题】如何在 jQuery 中使用 preg_match?【英文标题】:How can I use preg_match in jQuery? 【发布时间】: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" />

【问题讨论】:

preg_matchphp 函数,而不是 javascript 函数,因此您不能使用它。你应该看看这里:developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions 【参考方案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 - 顺便说一下,您知道,您的电话号码正则表达式对于美国以外的任何人都将失败。不确定您的网站的用途,但如果您期待任何外国用户,您将需要使您的正则表达式更加宽松。 reference for the javascript match function【参考方案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。

【讨论】:

以上是关于如何在 jQuery 中使用 preg_match?的主要内容,如果未能解决你的问题,请参考以下文章

为密码验证创建 preg_match 允许 (!@#$%)

使用 preg_match 检测 url?字符串中没有 http://

如何转义 preg_match 模式中的斜杠字符? [复制]

如何使这个 preg_match 不区分大小写?

如何使用 preg_match php 函数获取 Dailymotion 代码? [复制]

使用 preg_match 匹配 IMG 标签的 SRC 属性