/ / Javascript、正規表現:例、正規表現のチェック

Javascript、正規表現:例、正規表現のチェック

ハイパーテキスト言語が出現する前ではなく、むしろ前にそれは我々だけで見てはいけないが、一定の条件の下で、特定の場所で、右の量で変更されたデータの下にこれを行うには、通常の検索機能を置き換えることが明らかになって以来経験豊富なプログラマを組織しました。プログラミング言語で技術調査の傑作を作成し、データベースは、ストアドプロシージャ、トリガ、かさばるサンプルリレーショナル情報トラックの他の手段を備え、サンプリング条件の形で優れ。革命への正規表現の出現はつながらなかったが、それは情報を検索と置換するのに便利な、便利な方法でした。たとえば、電子メールが大幅に訪問者の登録を簡略化するJavaScriptの正規表現は、存在しないアドレスにメッセージを送信ウェブサイトをロードしません。

JavaScriptが正規表現であると言うとより良いprodumannnyh呼び出しシーケンスのindexOf()は、従来の環状および事業者の枠で、それはスクリプトコードがコンパクトで作られたが、初心者にはほとんど分かりました、それが明確になることができると言うことはできません。

RegExpオブジェクト=テンプレート+エンジン

正規表現はテンプレート+エンジンです。 最初は実際には正規表現です - JavaScriptオブジェクトはRegExpで、2番目は正規表現です.2番目はテンプレートエグゼキュータで、これを文字列に適用します。プログラミング言語ごとに正規表現を実装するエンジンは異なります。すべての相違点が重要であるわけではありませんが、正規表現を慎重にチェックしてから使用することを忘れないでください。

javascriptの正規表現

正規表現を書くための特別な表記法非常に便利で効果的ですが、開発者からの注意、正確さ、そして忍耐が必要です。正規表現のパターンを表記するには、使用する必要があります。これはファッションへの賛辞ではなく、 "JavaScriptの正規表現"の仕組みを実装するロジックです。

正規表現パターン

2つのオプションが許可されています:

var expOne = / abc * / i;

var expTwo = RegExp( "abc *"、 "i");

第1の方法が通常使用される。 2番目の場合は、記号 ""を使用するため、一般的な規則に従ってエスケープする必要があるため、引用符が使用されます。

"i"は "case is not important"のフラグです。 "g" - "グローバル検索"と "m" - マルチライン検索のフラグを使用することもできます。

記号「/」はパターンを示すのに用いられる。

正規表現の開始と終了

記号「^」は、(1つまたは複数の)記号正規表現が始まり、 "$"はどの文字が最後に来るべきかを決定します。あなたは表現の中でそれらを試してはいけません、彼らは別の意味を持っています。

例えば、

var eRegExp = new RegExp(cRegExp、 "i");

var cRegRes = "";

var sTest = "AbcZ";

if(eRegExp.test(sTest)){

cRegRes + = " - はい";

} else {

cRegRes + = " - いいえ";

}

var dTestLine = document.getElementById( "scTestLine");

"+ STEST +" "" + cRegRes dTestLine.innerHTML = "式/" + cRegExp + "のため/ライン"。

"scTestLine"要素には結果があります(変数cRegExpには対応する値があります)。

expression / ^ AbcZ $ /は文字列 "abcz"に対応する - はい

フラグ "i"を削除すると、結果は次のようになります。

expression / ^ AbcZ $ /は文字列 "abcz"に対して - いいえ

正規表現の内容

正規表現は検索の対象となる文字列です。 / qwerty /という式は、この特定のシーケンスのエントリを探しています。

式/ qwerty /文字列 "qwerty" - はい

式/ qwerty /文字列 "123qwerty456" - はい

記号 "^"は式の本質を変えます:

式/ ^ qwerty /文字列 "123qwerty456" - いいえ

式/ ^ qwerty /文字列 "qwerty456" - はい

同様に、行末の文字。 正規表現では、[a-z]、[AZ]、[0-9] - 指定された1つまたは複数のレジスタ内のラテンアルファベットのすべての文字などのシーケンスが許可されます。ロシア語の文字も使用することができますが、文字列のエンコーディング(検索される場所、検索対象となる場所)およびページに注意を払う必要があります。多くの場合、ロシア語の文字や特殊文字は、コードを設定することをお勧めします。

正規表現を作成するときに、特定の場所にある特定の文字の存在のためのオプションを指定します。その番号は次のように設定されます。 "*" = 0回以上繰り返します。 "+" = 1回以上繰り返します。 {1、}は "+"と同じです。 {n} =正確にn回繰り返す。 {n、} = n回以上繰り返します。 {n、m} = nからm回繰り返す。

角括弧を使用して、セットからの文字オプション。それはこのように見えます。 [abcd] = [a-d] = "a"、 "b"、 "c"または "d"の4文字のいずれか。反対を指定することができます。セット内で指定された文字以外の文字:[^ abcd] = "a"、 "b"、 "c"または "d"を除く任意の文字。 "?"この場所に文字がない可能性があることを示します。 ""改行を示す以外の文字を定義します。これらは "n"、 "r"、 "u2028"または "u2029"です。 "s * | S *" = "[s | S] *"とは、改行を含む任意の文字を検索することを意味します。

簡略化された正規表現オプション

"[s | S] *"という表現は、空白またはその欠如、つまり文字列内にあるすべてのものを検索します。この場合、記号「s」はスペースを意味し、記号「S」はそのスペースを意味する。

同様に、 "d"を使用して小数点を検索し、 "D"を使用して数字以外の文字を検索することができます。 "f"、 "r"、 "n"という表記は、帳票送り、キャリッジリターン、改行に対応しています。

タブ文字は「t」、縦は「v」です。指定 "w"には、任意のラテンアルファベット文字(英字、数字、アンダースコア)= [A-Za-z0-9_]があります。

"W"という指定は[^ A-Za-z0-9_]と同等です。これは、ラテンアルファベットの文字ではない文字、数字または "_"記号を意味します。

文字を検索する "

推奨される表現と正規表現のエンコーディング

文字列のさまざまなバリエーションについて慎重にテストするためには、正規表現が重要です。

JavaScriptの正規表現

定期的なエラー表現の作成経験それにもかかわらず、正規表現を書くという規則の知識は、特に「普通」がある言語から別の言語に移されたときに、現実には対応しない可能性があることを常に心に留めておく必要があります。

クラシック(正確な指示)と正規表現の簡略化されたバージョンですが、最初のものを好む方が良いでしょう。確かに、古典では、何が求められているのか、どのようにして常に明確に示されています。正規表現または検索文字列にロシア語の文字がある場合、正規表現を実行するJavaScriptコードが統一されたコードに変換されるすべての文字列およびページが使用されます。

ラテンアルファベットに属さない文字を処理するときは、文字コードを指定することを検討し、文字そのものを指定することは検討してください。

JavaScript検索アルゴリズムを実装するときは、正規表現を慎重にチェックする必要があります。文字エンコーディングを制御することは特に重要です。

正規表現カッコ

角括弧はシンボルのオプションを示し、特定の場所に存在していなければならず、存在していなければなりません。しかし、これは一般的なルールです。例外はありませんが、アプリケーションにはさまざまなオプションがあります。

var cRegExp = "[a-z] *。(png | jpg | gif)";

var eRegExp = new RegExp(cRegExp、 "i");

var cRegRes = "";

var sTest = "picture.jpg";

if(eRegExp.test(sTest)){

cRegRes + = " - はい";

} else {

cRegRes + = " - いいえ";

}

結果:

式/ [aaaz] *。(png | jpg | gif)/行 "picture.jpg" - はい

expression /^[a-d[[a-z[*..(png|jpg|gif)/ line "picture.jpg"の場合 - いいえ

式/^[a-d[[a-z[*..(png|jpg|gif)/ "apicture.jpg"の行 - はい

expression /^[a-d[[a-z[*..(png|jpg|gif)/ "apicture.jg"の行には - いいえ

アスタリスクが後に続くすべてのものが0回存在する可能性があることに注意してください。これは、「正規のシーズン」が予期しない方法で動作する可能性があることを意味します。

JavaScriptの正規表現の例

Check RegExp - 電子メールのテスト

JavaScriptでは、正規表現はtestとexecの2つのメソッドを取得し、メソッド(関数)の文字列オブジェクト(String)で検索、分割、置換、および一致させることができます。

テストメソッドは既に実演されており、正規表現の正しさをチェックすることができます。メソッドの結果:true / false。

次のjavascriptの正規表現を考えてみましょう。 「難しいが確かな」からのメールをチェックする:

var eRegExp = / ^(([^ <>()[] \。、;:s @ "] +(。[^ <>()[] \。、;:s @"] +)*)|( "。+"))@(([[0-9] {1,3}。[0-9] {1,3}。[0-9] {1,3}。[0-9] {1 、3}])|(([a-zA-Z-0-9] +。)+ [A-zA-Z] {2、}))$ /;

次の行に対してvarsTest = "[email protected]"はtrueを返します。つまり、この行は有効な電子メールアドレスです。テストは、eRegExp.test(sTest)メソッドを使用して実行されました。

実用的な使用:電子メールの処理

出力のexecメソッドは配列呼び出しを提供します:

var aResult = eRegExp.exec(sTest);

cRegRes = "<br/>" + aResult.length + "<br/>";
for(var i = 0; i <aResult.length; i ++){
cRegRes + = aResult [i] + "<br/>";
}

次の結果が得られます。

9
[email protected]
Slava.Chip
Slava.Chip
.Chip
定義されていない
sci.by
定義されていない
sci.by
sci。

残りのメソッドも同様に動作します。 自分で確認することをお勧めします。実際には正規表現の開発と使用を進めることが望ましく、コードのコピーはここでは必ずしも適切ではありません。

人気のある "レギュラー"

提供されているJavaScript正規表現電子メールだけではありません。そこにはもっと簡単なオプションがたくさんあります。たとえば、/ ^ [w-。] + @ [w-] +。[a-z] [2,3] $ / i。ただし、このオプションでは、電子メールアドレスを記録するためのすべてのオプションが考慮されているわけではありません。

もちろん、あなたは同僚の経験を見る必要がありますが、独自の正規のJavaScript式を設計する前に、提案するメソッドを分析してください。しかし、いくつかの困難があります。 JavaScriptの正規表現(コピー時の例)では、必須の文字: ""、 "/"または引用符を複製できることを忘れないでください。これにより、長い時間を検索できるエラーが発生します。

通常の「人間の側面」を考慮に入れることが重要です。 123-45-67、(29)1234567、80291234567または375291234567:訪問者(人)とすることができる携帯電話のための正式なJavaScriptの正規表現、後は、さまざまな方法で与えられています。そして、これはすべて同じ数字です。複数のパターンをスペルは常に受け入れられない、と書き込み番号の規則の強固な固定が不要な不快感や制約を作成することがあります。オプション/ ^ D [D() - ] {4,14}のD $ /私はあなたがあなたの電話番号を確認し、ほとんどの場合に適しています。

javascriptを定期的にする必要がある場合式、数字だけのチェック、そのような単純なケースでさえも明確化が必要です。それは、整数または分数、指数表記、または規則正しく、正または負であると考える必要があります。また、通貨記号の存在、小数点以下の桁数、および整数部分のトライアドへの除算を考慮に入れることもできます。

/ ^ d + $ / iという式は数字のみをチェックし、/^d+.d+$/iはピリオドを使って数字の小数部を示すことができます。

JavaScriptでは、正規表現チェックで入力されたデータの形式を厳密に示すために使用することができます。これは、特にアンケート、パスポートデータ、法的住所などを入力する際に​​重要です。

日付を確認する - ちょっと複雑です

電子メールのjavascript正規表現

別のJavaScriptの正規表現を考えてみましょう。 数字や電話番号などの日付の例は、剛性と柔軟性の選択肢です。イベントの日付は、しばしば入力する必要がある重要なデータの1つです。しかし、入力を特定の形式で固定する:「dd-mm-yyyy」または「dm.yyy」は、しばしば顧客の不満を招く。古典的なHTMLフォームで満たされた日々の入力フィールドからの移行は、1桁の数字しか入力しないと発生しない可能性があり、2番目の入力フィールドを入力すると問題が発生する可能性があります。たとえば、曜日のフィールドに3がすでに入力されていて、次の番号2が最初の番号に置き換わることはなく、32が割り当てられています。これは当然不便です。

正規表現の効率と利便性訪問者との対話の全体的な構成に大きく依存する。 1つのケースでは、日付を指定するには、1つのフォーム入力フィールドを使用することをお勧めします。それ以外の場合は、日、月、および年の異なるフィールドを指定する必要があります。しかし、閏年、月数、日数をチェックするための追加の "コード経費"があります。

正規表現を置き換えるjavascript

ルックアップ、正規表現メモリを置き換える

JavaScript置換(正規表現)Stringオブジェクトのメソッドを使用し、値を見つけてすぐに変更することができます。これは、入力エラーの修正、フォームフィールドの内容の編集、およびあるプレゼンテーション形式から別の形式へのデータ変換に便利です。

var cRegExp = /([a-i] +)s([a-i] +)s([a-i] +)/ i; // searchは3つの "変数"

var sTest = "この記事は良いです!";
var cRegRes = sTest.replace(cRegExp、 "$ 2、$ 3、$ 1");

var dTestLine = document.getElementById( "scTestLine");

dTestLine.innerHTML = "" + cText + ""行の式 "+ cRegExp +"は次のようになります: "+ cRegRes;

結果:

「この記事は良いです!」という行の式/([a-i] +)s([a-i] +)s([a-i] +)/ iそれはなるでしょう:記事、良い、これ!

実行されると、かっこの各ペアは結果を "変数" $ nに記憶します.nは角かっこ($ 1、$ 2、...)の数です。一般的に受け入れられているのとは対照的に、変数の番号は0からではなく1からです。

javascriptの正規表現の電子メールの検証

一般的な推奨事項

正規表現はコードを単純化しますが、時間はその開発はしばしば重要です。あなたは簡単な構造で作業を始め、より複雑な表現にすることができます。さまざまなオンラインサービスを使用して、正規表現や特別なローカルツールをテストすることができます。

javascript正規表現の数だけ

最良の選択肢は、独自のものを作成することです正規表現ライブラリ、および新しい開発をテストするための専用ツールが含まれています。これは、経験を統合し、信頼性の高い便利なデザインを迅速に作成する方法を学ぶ最も良い方法です。

文字と文字列の繰り返しを使用して、すなわち繰り返しの数を示す特殊文字 "*"、 "+"および中括弧は、簡潔性および便宜性の原則によって導かれるべきである。正規表現が動作し始めてから結果が得られるまでの間、正規表現は完全に使用されているブラウザエンジンの恩恵であることを理解することが重要です。すべてのJavaScript言語が同等であるとは限りません。各ブラウザは、正規表現の解釈に独自の個人設定を追加できます。

互換性はページと表に限定されません。スタイルシート、正規表現も関連しています。 JavaScriptを使用するページは、さまざまなブラウザで正常に動作した場合にのみデバッグと見なすことができます。

JavaScript、String、RegExp

正当なクライアントレベルで作業します。javascriptのブラウザの訪問者は、高度に熟練した開発者が必要です長い間、ブラウザのツールやサードパーティの拡張機能、コードエディタ、独立したプログラムの助けを借りて、JavaScriptコードをデバッグすることが可能になりました。

ただし、すべての場合ではなく、デバッガで優れたサポート、迅速なエラー検出、ボトルネックの検出を管理者に提供します。遠い過去にコンピュータがコンピューティングに集中していた時代。さて、情報に特別な注意が払われ、文字列オブジェクトが重要な役割を果たすようになりました。数字は文字列になり、正しい時間と正しい場所でのみ真の本質を現します。

正規表現は文字列の機能を強化しますが、それ自体は適切な敬意を必要とします。たとえそれをモデル化することができたとしても、RegExpをデバッグすることは非常に興味深い考えではありません。

RegExpオブジェクトの構造とロジック、Stringオブジェクトの意味、JavaScriptのシンタックスとセマンティクスを理解することは、安全で信頼できるコード、各ページおよびサイト全体の安定した動作を保証するものです。

続きを読む: