2012-03-01 7 views
0

私は最近、以下のJavascriptを見つけました。(信じて)私はその操作を理解していますが、何が現れているのかを正規表現の文字列クラスにすることはできません。 ( "/\W/.test")高度なJavascript正規表現クラス?

function AlphaNumericStringCheck(text) 
    { 
     if (/\W/.test(text.replace(/^\s+|\s+$/g,""))) return false; 
     return true; 
    } 

誰かがこのテクニックに名前を付けることができるので、私はそれ以上調べることができますか?

+0

を '/ \ W /は'正規表現リテラルです。正規表現には、呼び出すことのできるメソッドがあります。 https://developer.mozilla.org/ja/JavaScript/Guide/Regular_Expressionsとhttps://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/RegExp –

+0

をご覧ください。あなたの質問には私には分かりませんあなたは即座の正規表現について質問していますか?あなたは "正規表現の文字列クラス"とはどういう意味ですか?それは文字列ではなく正規表現です。 –

+0

あなたはスラッシュの間の内容についてtest()メソッドを参照していますか?もしそうなら、それはJavaScriptのRegExpオブジェクトになります。これはJSの正規表現の統合構文に過ぎません。 http://www.w3schools.com/jsref/jsref_obj_regexp.asp –

答えて

4

ソースコード内の/\W/は、regular expression literalMDC link)です(MDCが仕様より約18X明確です)。文字列リテラル( "foo")と同様に、正規表現リテラルはコード内に正規表現を書く方法です。正規表現リテラルの中の/文字は、文字列リテラルの引用文字に似ています。文字列リテラルでは、引用符の内側にあるのは文字列の内容です。正規表現のリテラルでは、/文字の中にあるものが正規表現です。 (また、エンディング/次のフラグが存在する場合があります。)

は、これは:

var rex = /\W/; 

...正規表現\W(試合1ワード文字)のための正規表現オブジェクトを作成します。長い形式で、私はバックスラッシュは文字列リテラルでは特別なので、文字列内のバックスラッシュをエスケープしなければならなかったこと

var rex = new RegExp("\\W"); 

注:これは、(基本的に)に相当します。これは、正規表現のリテラルがある理由の1つです。すべてのバックスラッシュ(バックスラッシュが多くの正規表現の重要な部分です)からエスケープする必要があるとき、非常に混乱し、非常に迅速になるためです。

正規表現は、機能を付与されたプロパティを持つオブジェクトです(実際にはメソッドはありませんが、JavaScriptは技術的にのメソッドを持っていません)。したがって、/\W/.test(...)は、/\W/によって定義された正規表現オブジェクトに対してtest関数を呼び出します。

+0

ありがとうT.H Crowder。 "/ \ W/test(...)は、リテラル/ \ W /で定義された正規表現オブジェクトのテスト関数を呼び出します。"これは私が探していた答えの一種です。前にこのフォームを見たことがなく、明らかにJSの関数とオブジェクトで何ができるのかを完全に理解していません。サイドノート - MDCドキュメントがこのフォームを例として挙げていれば良いでしょう! – user66001

+0

@ user66001:助けてくれてうれしい! "/ \ d +(?!\。)/。exec(" 3.141 ")'は '141'にはマッチしますが、' 3.141'にはマッチしません。 " –

+0

それでは、私は正規表現については読んでいませんでしたが、私は既にそれに慣れています:( – user66001

0

\Wは、wordのショートカット(短縮文字クラスまたは拡張子)です。数字の場合は\d、空白と改行の場合は\sと同じです。それはあなたが使用している正規表現の実装に依存します。

このリテラルは、コンパイルする前に完全な表現に置き換えられています。 \d[0-9]になり、\Wはおそらく[0-9a-Z][0-9a-Z]*になります。彼らはあなたの表現をより読みやすくするように設計されています。あなたがここでそれらのいくつかの詳細を見ることができます

http://www.zytrax.com/tech/web/regex.htm#special

+1

Thanks Guax。おそらくRegExに精通していて、正規表現の例は問題ではなく、 \ W /オブジェクト。 – user66001