2011-05-17 17 views
5

jQuery'de telefon numarasını doğrulamak için preg_match kullanabilir miyim? İşte çalışmıyor benim kodudurjQuery'de preg_match'i nasıl kullanabilirim?

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

HTML

+4

'preg_match' bir PHP fonksiyonu değil, bir JavaScript işlevidir, dolayısıyla bunu kullanamazsınız. Burada bir göz atmanız gerekir: https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions –

cevap

3

bir PHP işlevini kullanmak için herhangi bir yardım plz, sunucuya bir HTTP isteği yapmak zorunda kalacaktır Could <input id="phone" type="text" value="" name="phone" />

(ile Test etmek istediğiniz her türlü veriyi) ve ardından cevabı ayrıştırın.

JavaScript's native regular expression functionality ürününü daha kullanışlıdır.

0

Bir PHP işlevi olan preg_match kullanmak yerine, String nesnesinin match işlevini kullanmalısınız. Eşleme işlevini kullanma hakkında bilgi için Mozilla docs'a bakın.

11

Javascript, string.match(), string.replace() ve string.split() işlevleri aracılığıyla erişilen düzenli bir ifade motoru içerir. Örneğin

: preg_match() olarak temelde aynı işlevselliği ile sağlamalıdır

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

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

.

Yani söz konusu preg_match'in aynısı doğrulama yapmak için:

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

kesinlikle tam olarak PHP versiyonu gibi çalışır preg_match() adlı bir işlev sahip ısrar ederse, PHPJS adlı bir proje, var olduğu Javascript'te PHP fonksiyonlarını uygulamayı amaçlamaktadır. Sitelerine hızlı bir bakış, şu anda tam olarak çalışan bir preg_match() uygulamasına sahip olmamasına rağmen, bakmak isteyebileceğiniz bir unfinished implementation ürününe sahip olduklarını göstermektedir. Ancak açıkçası, yerleşik Javascript .match() işlevinin yeterli olması gerekir.

+0

Bu kod ile yanlış bir telefon numarası ya da hem sayı hem de metin girerseniz herhangi bir hata mesajı alamıyorum Ben istemiyorum – Mary

+0

@Mary - İfadenin önüne “!” koymamıştım, bu yüzden ifade gelmediği zaman ifadeyle eşleştiğinde “if()” ye giriyordu. Ancak, tam bir copy + paste çözümü değil, '.match()' işlevinin nasıl kullanılacağına örnek kod olarak tasarlanmıştır. Ama cevabını, yapmak istediğin şeye daha yakın olacak şekilde düzenledim. – Spudley

+1

@Mary - Bu arada, bildiğiniz gibi, telefon numaranız regex ABD dışındaki kişiler için başarısız olacaktır. Sitenizin ne için kullanıldığından emin değilsiniz, ancak yabancı bir kullanıcı bekliyorsanız, normal ifadenizi çok daha yumuşak hale getirmeniz gerekecektir. – Spudley

İlgili konular