4

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

4

4 に答える 4

12

string.match()Javascriptには、、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バージョンとまったく同じように機能するという関数を使用することを絶対に主張する場合は、JavascriptでPHP関数を実装することを目的としたPHPJSというプロジェクトがあります。彼らのサイトをざっと見てみると、彼らは現在完全に機能しているpreg_match()実装を持っていませんが、あなたが見たいと思うかもしれない未完成の実装を持っていることがわかります。しかし率直に言って、組み込みのJavascript.match()関数で十分です。

于 2011-05-17T13:33:08.690 に答える
3

PHP 関数を使用するには、サーバーに対して HTTP 要求を作成し (テストするデータは何でも)、応答を解析する必要があります。

JavaScript のネイティブ正規表現機能を使用することをお勧めします。

于 2011-05-17T13:30:22.050 に答える
2

RegExp.exec(string)動作します。

これを試して:

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

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

于 2011-05-17T13:33:36.117 に答える
0

PHP関数であるを使用する代わりにpreg_match、Stringオブジェクトのmatch関数を使用する必要があります。一致関数の使用については、 Mozillaのドキュメントを参照してください。

于 2011-05-17T13:32:09.090 に答える