コンピューター, プログラミング
Javascriptを、正規表現の例は、正規表現をチェック
ハイパーテキスト言語の出現前にではなく、それは我々だけで見てはいけないが、一定の条件の下で、特定の場所で、右の量で変更されたデータの下にこれを行うには、通常の検索機能を置き換えることが明らかになるまで任意の洗練された編成プログラマ。 プログラミング言語で技術調査の傑作を作成し、データベースは、ストアドプロシージャ、トリガ、かさばるサンプルリレーショナル情報トラックの他の手段を備え、サンプリング条件の形で優れ。 革命への正規表現の出現はつながらなかったが、それは情報を検索と置換するのに便利な、便利な方法でした。 たとえば、電子メールが大幅に訪問者の登録を簡略化するJavaScriptの正規表現は、存在しないアドレスにメッセージを送信ウェブサイトをロードしません。
JavaScriptの正規表現のindexOf()は、従来の環状および事業者の枠に呼び出してはるかに優れてprodumannnyhシーケンスであると言うことが、それはスクリプトコードがコンパクトで作られたが、初心者にはほとんど分かりましたと言うことはできません、明確にすることができます。
オブジェクトのRegExp = +テンプレートエンジン
正規表現は、 - テンプレート+エンジンです。 JavaScriptのオブジェクト - - 正規表現、二 - このテンプレートのパフォーマー、ラインにそれを適用する最初は実際には正規表現です。 各プログラミング言語のための正規表現を実装するエンジンは異なっています。 いないすべての差は有意であるが、それは念頭に置いて、だけでなく、慎重に前にその動作に正規表現を確認してくださいする必要があります。
正規表現を書いて特別な表記法は非常に使いやすいと非常に効果的であるが、それは、開発者からのケア、清楚と忍耐が必要です。 表記することで、正規表現パターンは、に慣れる必要があります。 これは、«JavaScriptの正規表現を実装するためのメカニズムのロジックで、流行ではありません。」
正規表現パターン
2つのオプションが許可します:
= / ABCのvar expOne * / I;
VAR expTwo =正規表現( "ABC *"、 "I");
典型的には、第一の方法を用います。 後者の場合は、引用符、文字を使用するため、「\」、それは一般的な規則によってエスケープする必要があります。
「I」は - 「大文字と小文字を区別しない」を示すフラグ。 «グローバル検索」と 『M』 - - 複数行の検索また、フラグG」を使用することができます。
テンプレートを使用するのが一般的示す記号「/」。
最初と正規表現の終わり
「^」末端でなければならない文字(複数可)を決定する文字(複数可)、そこから正規表現を開始する、と「$」を定義します。 あなたは、彼らが別の意味を持っている表現、内部でそれらを試してみるべきではありません。
たとえば、
VAR eRegExp =新しいRegExpオブジェクト(cRegExp、 'I')。
VaRのcRegRes = '';
VAR STEST = 'AbcZ';
IF(eRegExp.test(STEST)){
cRegRes + = ' - はい';
}エルス{
cRegRes + = ' - ノー';
}
VAR dTestLine =のdocument.getElementById( 'scTestLine');
'行の/ dTestLine.innerHTML = '式/' + cRegExp + "' + STEST + '"' + cRegRes。
要素は「scTestLine」(cRegExp変数は対応する意味を持っている)となります。
文字列 "abcz" の表現/ ^ AbcZ $ / - はい
あなたは「I」フラグを削除した場合、結果は次のとおりです。
文字列 "abcz" の表現/ ^ AbcZ $ / - ノー
正規表現の内容
正規表現は、検索の対象となる文字の配列です。 式/ QWERTY /エントリを探して、この配列です。
表現/ QWERTY /文字列の "QWERTY" - はい
表現/ QWERTY /文字列の "123qwerty456" - はい
「^」の変更が表現されています。
表現/ ^ QWERTY /文字列の "123qwerty456" - ノー
/ ^ QWERTY /文字列の "qwerty456" という表現 - はい
同様に、ラインシンボルの終わりのために。 正規表現は、一貫性を可能に:例えば、[AZ]、[AZ]、[0-9] - この場合、または図中のアルファベットのすべての文字。 ロシア文字を使用することもできるが、(求められている求められている)文字列のエンコーディングおよびページに注意を払う必要があります。 多くの場合、ロシア文字、などの特殊文字は、コードを設定することが好ましいです。
正規表現を形成する際に、以下のように、それらの数が所与で、特定の場所に特定のシンボルの存在のオプションを指定することができます「*」= 0繰り返し回以上。 「+」= 1つの以上の繰り返し回数。 {1}「+」のように、同じです。 {N} =繰り返し正確にn回。 {N} = N繰り返し倍以上; m倍からnの{N、M} =繰り返します。
ブラケットを使用して、オプションの文字セットを指定することができます。 それはこのようになります。 [ABCD] = [AD] =すべての4つのシンボル: 'A'、 'B'、 'C' または 'D'。 あなたはそれ以外の場合は指定することができます。 セット内の指定された以外の任意の文字:[^ ABCD]は「A」以外の文字、「B」、「C」または「d」を=。 '?' これは、この時点ではシンボルはできないことを示します。 '' 改行を示す以外の任意の文字を指定します。 これは '\ n' は、 '\ r' が、 '\ u2028' または '\ u2029の'。 式 '\よ* | \ S *' = '[\ | S \ S] *' を改行を含む任意の文字、の検索を意味します。
正規表現の簡易バージョン
式「[\ | S \ S] *」 - 探索空間、またはその欠如、それはライン上にあるものすべてです。 彼の不在 - この場合は、記号はスペースを示し、「\ S」が「\はS」。
同様に、あなたは、小数点以下の桁数を検索するために「\ d」を使用することができ、および「\ D」は、数値以外の文字を見つけます。 表記「\ F」、「R」と「\ n」はフォームフィード、キャリッジリターンとラインフィードに対応しています。
タブ文字 - '\ tの'、垂直 - '\のV'。 指定 '\ W' は、任意のラテンアルファベットの文字(文字、数字、およびアンダースコアマーク)を求める= [A-ZA-Z0-9_]。
'W \' 指定は、[^ A-ZA-Z0-9_]と等価です。 これは、アルファベット、数字、または「_」の文字以外の文字を意味します。
検索文字 '\ 0' =検索NUL文字。 検索それぞれ '\ xHH' または 'uHHHH \' =検索文字コードまたはHHHH HH。 H - 進数字。
推奨言葉遣いや正規表現のコーディング
任意の正規表現は慎重に行の異なるバージョンでテストすることが重要です。
正規表現の誤りを作成するための経験と小さくなりますが、それにもかかわらず、常に正規表現を書くのルールの独自の知識は「レギュラーシーズンは、」別の言語から転送された場合は特に、真実でないことを心に留めておくべきです。
古典的な(正確な表示)と正規表現の簡略化されたバージョンとの間の選択は、最初のを好むことをお勧めします。 結局のところ、古典に常に明確に両方が求められていることを示しています。 正規表現または検索文字列がロシアの手紙を持っている場合は、単一エンコードするすべての行と、正規表現を実行するJavaScriptコードを見つける動作しているページにつながるはず。
文字処理、非ラテンアルファベットがある場合、それは文字コードではなく、文字そのものの表示を検討することは理にかなっています。
JavaScriptの正規表現での検索アルゴリズムを実装する場合は、慎重にチェックする必要があります。 文字エンコーディングを制御することが特に重要です。
正規表現の括弧
配列変異体 - 括弧でなければならないか、特定の場所に配置することはできませんシンボル、およびラウンドのオプションを定義します。 しかし、これはあくまで一般的なルールです。 それからも例外ではありませんが、多種多様なアプリケーションがあります。
VaRのcRegExp = "[AZ] *(PNG | JPG | GIF)。";
VAR eRegExp =新しいRegExpオブジェクト(cRegExp、 'I')。
VaRのcRegRes = '';
VaRのSTEST = 'picture.jpg';
IF(eRegExp.test(STEST)){
cRegRes + = ' - はい';
}エルス{
cRegRes + = ' - ノー';
}
結果:
ライン「picture.jpg」の/[az]*.(png|jpg|gif)/表現 - はい
「picture.jpg」ラインの/^[ad][az]*.(png|jpg|gif)/表現 - なし
ライン「apicture.jpg」の/^[ad][az]*.(png|jpg|gif)/表現 - はい
「apicture.jg」ラインの/^[ad][az]*.(png|jpg|gif)/表現 - なし
すべて、その後、アスタリスクはゼロ倍に存在してもよいことに留意すべきです。 これは、「レギュラーシーズンは」少なくとも予期しない方法で動作する可能性があることを意味します。
正規表現をチェック - メールをテスト
通常のJavaScript式では二つの方法、テストとexecを得て、そのメソッド(関数)にラインオブジェクト(文字列)で使用することができます検索、スプリット、交換し、一致。
試験方法は、すでにそれはあなたが正規表現の正しさを確認することができ、実証されています。 メソッドの結果:真/偽。
次のJavaScriptの正規表現を考えてみましょう。 「確かに難しいが、」数からのメールを確認します。
VAR eRegExp = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s @ "] +)*)|(" +「))((\ [[0-9] {1,3} @ \ [0-9] {1,3} \ [0-9] {.. 。1,3} \ [0-9] {1,3}])|(([-ZA-Z \ -0-9] + \)+ [-ZA-Z] {2}) )$ /;
文字列VAR STEST ='SlavaChip@sci.by「は、この文字列が存在し、真与え正しいメールアドレスです。 監査はeRegExp.test(STEST)により行いました。
実用化:電子メールの治療
Execメソッドは、出力配列、コールが用意されています。
VaRののaResult = eRegExp.exec(STEST)。
cRegRes = '
' + aResult.length + '
';
{(; iはaResult.lengthを cRegRes + =のaResult [I] + '
'。
}
それは次のような結果が得られます。
9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
未定義
sci.by
未定義
sci.by
SCI。
他の方法も同様に動作します。 自分でそれらをチェックアウトすることをお勧めします。 正規表現の開発と使用は、それが実際に動作することが望ましい、コードのコピーは、ここではいつもお勧めできません。
人気の「レギュラーシーズン」
JavaScriptの正規表現は、多くの、より簡単な選択肢があるだけでなく、電子メールに与えられました。 例えば、/^[\w-\.]+@[\w-]+\.[az]{2,3}$/i。 しかし、本実施形態では、アカウントにメールアドレスレコードのない全ての実施形態をとります。
もちろん、あなたがJavaScriptの正規表現に自分自身を設計する前に、彼らの提案方法を分析するために、同僚の経験を表示する必要があります。 しかし、いくつかの困難があります。 「\」、「/」や引用符:私たちは、JavaScriptの正規表現(コピーする際の例)が不可欠で文字を再現できることを忘れてはなりません。 これは、あなたが長い検索することができ、エラーにつながります。
考慮にいつも取ることが重要である「人間の次元を。」 123-45-67、(29)1234567、80291234567または375291234567:訪問者(人)とすることができる携帯電話のための正式なJavaScriptの正規表現、後は、さまざまな方法で与えられています。 そして、それはすべて同じ番号です。 複数のパターンをスペルは常に受け入れられない、と書き込み番号の規則の強固な固定が不要な不快感や制約を作成することがあります。 オプション/ ^ \ dは[\ D \(\)\ - ] {4,14} \ dが$ /私はあなたがあなたの電話番号を確認し、ほとんどの場合に適しています。
あなたがJavaScriptの正規表現、数字のみチェックを行いたい場合は、このような単純なケースは、説明が必要です。 これは、整数または分数、科学的表記法、又は、通常の正または負の数を考慮すべきです。 また、アカウントに通貨記号の有無、小数点以下の桁数とトライアド上の数値の整数部分の分割を取ることができます。
式/ ^ \ dは+ $ /私は数字と/^\d+\.\d+$/i表現だけをチェックポイントの使用は、数の小数部分を示すことができます。
JavaScriptで正規表現をチェックするプロファイル、パスポートデータ、および法律上のアドレスtを入力する際に特に重要であり、ハード、入力データのフォーマットを示すために使用することができます。D.
日付をチェックしてください - 複雑にシンプル
別のJavaScriptの正規表現を考えてみましょう。 電話番号の数についてはこれまでの例では、剛性と柔軟性の間の選択を表します。 イベントの日 - 頻繁に投与する必要が重要なデータの一つ。 しかし、特定の形式で入力固定:「DD-MM-YYYY 『または』 d.m.ggは「多くの場合、顧客の不満につながります。 あなただけの1桁を入力するとその日ツー月の入力フィールドからの移行は、古典的なHTMLフォームの完全な、場所を取ることができず、第2の入力は困難な場合があります。 例えば、一日のフィールドには、3導入され、次の数2は、第1代わるものではありません、そしてもちろん、不都合が生じるだろう、彼女の32、に起因しています。
効率性と正規表現の利便性は、本質的に、訪問者との対話の一般的な構成に依存します。 あるケースでは、フォームの1つの入力フィールドを使用することをお勧めします日付を示すために、他の場合には、日、月、年のための様々な分野のために提供することが必要です。 しかし、その後、任意の追加の「コードのコストは」うるう年月数、それらの日数を確認してください。
検索と置換、正規表現のメモリ
JavaScriptはStringオブジェクトのメソッドを使用して、(正規表現)を交換し、私たちは価値を見つけ、すぐにそれを変更することができます。 これは、入力ミスを補正するために有用である、フォームフィールドの内容を編集し、別のプレゼンテーションフォーマットからのデータを変換します。
VaRのcRegExp = /([-Z] +)\ S([-Z] +)\ S([-Z] +)/ I。 //検索するときは、3「変数」であり
VaRのSTESTは= 'この記事は良いです!';
VAR cRegRes = sTest.replace(cRegExp、 "$ 2、$ 3、$ 1")。
VAR dTestLine =のdocument.getElementById( 'scTestLine');
dTestLine.innerHTML = '式' + cRegExp + ' "+ STEST + '" ターン:' 文字列のための' + cRegRes。
結果:
表現/([AZ] +)\ sの([AZ] +)\ sの([AZ] +)/私はラインの "この記事は良いです!" アウト:記事は、この良いです!
ブラケット対の数($ 1、$ 2、...) - 括弧の各対を行う際に「可変」に結果$ nは、n個格納します。 従来とは異なり、ここでは変数の番号は1、0でありません。
一般的な推奨事項
正規表現は、コードを簡素化し、それを開発するための時間は、多くの場合、違いになります。 あなたは、より複雑な式に結合させ、その後、簡単なデザインとして始めることができます。 あなたは、正規表現または特殊なローカルなツールをテストするために、様々なオンラインサービスを利用することができます。
最良のオプションは、正規表現の独自のライブラリと新たな展開をテストするための独自のツールを作成します。 これは、経験を統合するとすぐに信頼性の高い快適なデザインを構築する方法を学ぶための最良の方法です。
繰り返しの回数は、シンプルさと便宜の原則によって導かれるべきで示し、文字と文字列、つまり、特殊文字「*」、「+」や括弧の繰り返しを使用します。 その作業の先頭に正規表現することを実現するために、その結果がブラウザによって使用されるエンジンの動力で完全で取得することが重要です。 いないすべての言語には、JavaScriptと同等です。 各ブラウザが自分の持って来ることが 個人的な好みを 正規表現の解釈で。
互換性は、正規表現に、それも関係しているだけでなく、ページやスタイルシートです。 ページには、それが正常にブラウザのさまざまな仕事をしているだけでなく、機能した場合にのみ考慮されることができ、JavaScriptを使用しています。
JavaScriptの文字列と正規表現
JavaScriptで訪問者のブラウザでは、クライアントレベルで正しい仕事することで、開発者の高いスキルを必要とします。 十分な長さは、JavaScriptコードのブラウザの自己資金をデバッグしたり、サードパーティの拡張機能、コードエディタ、独立したプログラムの助けを借りてする機会を持っています。
しかし、すべてではない場合、デバッガは、ハンドルと、ボトルネックを検出し、開発者、迅速なエラー検出のための良いサポートを提供することができます。 コンピュータが遠い過去に、計算が注目されている回。 さて、情報およびラインオブジェクトに特別な注意を払うには、重要な役割を果たしてきました。 スチール弦の数、およびその本質は、彼らが適切なタイミングと適切な場所にのみ現れます。
正規表現は、行の可能性を強化するが、自尊心が必要です。 デバッグ正規表現は、彼の作品には、それが可能であっても、あまり面白くないアイデアをシミュレートします。
真の安心・安全なコード、各ページの安定した動作と全体としてサイト - オブジェクトの文字列は、JavaScriptのシンタックスとセマンティクスを意味し、RegExpオブジェクトの構造とロジックを理解します。
Similar articles
Trending Now