如何在 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_match
是 php 函数,而不是 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 检测 url?字符串中没有 http://
如何转义 preg_match 模式中的斜杠字符? [复制]