我怎样才能在jQuery中使用preg_match?

时间:2011-05-17 13:27:07

标签: javascript jquery phpjs

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

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" />

任何人都可以帮助PLZ

4 个答案:

答案 0 :(得分:11)

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()功能应该足够了。

答案 1 :(得分:3)

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

最好使用JavaScript's native regular expression functionality

答案 2 :(得分:2)

RegExp.exec(string)将有效。

试试这个:

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

src:http://javascriptkit.com/javatutors/redev3.shtml

答案 3 :(得分:0)

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