Web開発者のための30の便利な正規表現コードスニペット
正規表現は、すべての開発者のツールベルトに含まれるべき強力なツールです。これらは非常に複雑なパラメータに基づいて文字列と照合することができるため、動的なWebサイトを構築する際の時間を大幅に節約できます。.
Web開発者はソフトウェア開発者とは異なるタスクに直面しますが、同じコードの基礎の多くが残っています。正規表現(または 正規表現)がありますか 急な初期学習曲線, しかし、彼らはすることができます 正しく使用すると非常に強力.
最も厄介な部分は構文を学び、最初からあなた自身の正規表現コードを書く方法を学ぶことです。時間を節約するために、開発プロジェクトに組み込むことができる30種類の正規表現コードの断片をまとめました。正規表現は単一の言語に限定されていないため、これらのスニペットを以下のものに適用できます。 JavaScript に PHP または Python.
1.パスワード強度
^(?=。* [AZ]。* [AZ])(?=。* [!@#$&*])(?=。* [0-9]。* [0-9])(?= 。* [az]。* [az]。* [az])。8 $
パスワードの強度をチェックすることは主観的なことが多く、絶対的な正解はありません。しかし、自分でパスワード強度チェッカーを一から書きたくないのであれば、この正規表現スニペットが素晴らしい出発点だと思います。 (ソース)
2. 16進数
\#([[a-fA-F] | [0-9])3、6
Web開発の分野は、16進数のカラーコードでどこにでもあります。この正規表現スニペットはあらゆる目的のためにあらゆる文字列から16進コードの一致を引き出すのに使用することができます。 (ソース)
3. Eメールアドレスを検証する
/[A-Z0-9._%+-]+@[A-Z0-9-]+.+.[A-Z]2,4/igm
開発者にとって最も一般的なタスクの1つは、文字列が電子メールアドレスの形式でフォーマットされているかどうかを確認することです。このタスクを実行するにはさまざまな方法があります。このSitePointリンクでは、文字列に対して電子メールの構文をチェックするための2つの異なるコードスニペットを提供しています。 (ソース)
4. IPv4アドレス
/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.)3 (?:25 [0-5] | 2 [0-4] [0-9] | [01]?[0-9] [0-9]?)\ b /
電子メールアドレスと同様に、インターネットにアクセスする特定のコンピュータを識別するために使用される一般的なIPアドレスがあります。この正規表現は、IPv4アドレスの構文に従っているかどうかを確認するために文字列をチェックします。 (ソース)
5. IPv6アドレス
(([[0-9a-fA-F] 1,4 :) 7,7 [0-9a-fA-F] 1,4 |([0-9a-fA-F] 1 、4}:){1,7}:|([0−9a − fA − F] {1,4}:){1,6}:[0−9a − fA − F] {1,4} | ([[0-9a-fA-F] 1,4 :) 1,5(:[0-9a-fA-F] 1,4)1,2 |([0-9a -fA-F] 1,4:)1,4(:[0-9a-fA-F] 1,4)1,3 |([0-9a-fA-F] 1,4:)1,3(:[0-9a-fA-F] 1,4)1,4 |([0-9a-fA-F] 1,4 :)1,2(:[0-9a-fA-F] 1,4)1,5 | [0-9a-fA-F] 1,4:((:[0 -9a-fA-F] 1,4)1,6)|:((::0-9a-fA-F] 1,4)1,7 |:)| fe80: (:[0-9a-fA-F] 0,4)0,4%[0-9a-zA-Z] 1、 |::(ffff(:0 1,4) 0,1:)0,1((25 [0-5] |(2 [0-4] | 1 0,1 [0-9])0,1 [0-9 ])\。)3,3(25 [0-5] |(2 [0-4] | 1 0,1 [0-9])0,1 [0-9])| ([[0-9a-fA-F] 1,4:)1,4:((25 [0-5] |(2 [0-4] | 1 0,1 [0-9 ])0,1 [0-9])\。)3,3(25 [0-5] |(2 [0-4] | 1 0,1 [0-9]) 0,1 [0-9]))
あるいは、このより高度な正規表現スニペットを使用して、新しいIPv6構文のアドレスを確認することをお勧めします。その違いは、開発中は重要ではありますがわずかです。 (ソース)
6.数千の区切り文字
/ \ d 1,3(?=(\ d 3)+(?!\ d))/ g
従来の番号付けシステムでは、3桁ごとにカンマ、ピリオド、またはその他のマークを大きい番号で付ける必要があります。この正規表現コードは任意の数に作用し、3桁ごとに選択した任意のマークを数千、数百万などに分割して適用します。(出典)
7.ハイパーリンクにHTTPを付加する
if(!s.match(/ ^ [a-z A-Z] +:\ / \ //))s = 'http://' + s;
JavaScript、Ruby、PHPのいずれで作業している場合でも、この正規表現は非常に役立ちます。 URL文字列をチェックして、HTTP / HTTPSプレフィックスがあるかどうかを確認し、ない場合はそれを先頭に追加します。 (ソース)
8. URLからドメインを取得
/https?:\/\/(?:[-\w]+\.)?([-\w]+)\.\w+(?:\.\w+)?\/?.*/i
すべてのWebサイトドメインには初期プロトコル(HTTPまたはHTTPS)が含まれており、多くの場合、サブドメインと追加のページパスが含まれています。このスニペットを使用して、そのすべてを切り取り、余分な飾りを付けずにドメイン名だけを返すことができます。 (SourceL
9.単語数でキーワードを並べ替える
^ [^ \ s] * $は完全に1単語のキーワードに一致^ ^ [^ \ s] * \ s [^ \ s] * $は完全に2単語のキーワードに一致^ ^ [^ \ s] * \ s [^ \ s] *少なくとも2つの単語(2つ以上)のキーワードに一致^([^ \ s] * \ s)2 [^ \ s] * $は3単語のキーワードに完全に一致^([^ \ s] * \ s )4 [^ \ s] * $は5語以上のキーワードに一致(ロングテール)
グーグルアナリティクスとウェブマスターツールのユーザーは本当にこの正規表現を楽しむでしょう。検索に使用された単語の数に基づいてキーワードを分類し整理することができます。.
これは数値的に特定のもの(すなわち5語のみ)であり得るか、またはそれはある範囲の語(すなわち2つ以上の語)に一致し得る。分析データのソートに使用された場合、これは1つの強力な表現です。 (ソース)
10. PHPで有効なBase64文字列を見つける
\?php [\ t] eval \(base64_decode \(\ '(([[A-Za-z0-9 + /] 4)*([A-Za-z0-9 + /] 3 = | [A-Za-z0-9 + /] 2 ==)?)1 \ '\)\)\;
あなたがPHPの開発者であれば、ある時点であなたはBase64でエンコードされたバイナリオブジェクトを探すためにコードを通してパースする必要があるかもしれません。このスニペットはすべてのPHPコードに適用でき、既存のBase64文字列をチェックします。 (ソース)
11.有効な電話番号
^ \ +?\ d 1,3?[ - 。]?\(?(?:\ d 2,3)\)?[ - 。]?\ d \ d \ d [ - 。]? \ d \ d \ d \ d $
短く、甘い、そして要点に。この正規表現コードは、主にアメリカ式の電話番号に基づいて、従来の電話番号構文を検証します。.
これはかなり複雑な問題になる可能性があるので、私はより詳細な答えを得るためにこのStackスレッドを読み飛ばすことを勧めます。 (ソース)
12.先頭と末尾の空白
^ [\ s] + | [\ s] + $
このコードスニペットを使用して、文字列から先頭/末尾の空白を取り除きます。これは大したことではないかもしれませんが、データベースから引き出されたときや別のドキュメントエンコーディングに適用されたときに出力に影響を与えることがあります。 (ソース)
13.プル画像ソース)
\< *[img][^\>] * [src] * = * [\ "\ '] 0,1([^ \" \' \>] *)
何らかの理由で画像のソースをHTMLから直接取り出す必要がある場合は、このコードスニペットが最適なソリューションです。バックエンドではスムーズに実行できますが、フロントエンドのJS開発者は代わりにフロントエンドをjQueryの.attr()メソッドに頼るべきです。 (ソース)
14. DD / MM / YYYY形式で日付を検証
^(?:( ?: 31(\ / | - | \。)(?: 0?[13578] | 1 [02]))\ 1 |(?:( ?: 29 | 30)(\ / | - | \。)(?:0?[1,3-9] | 1 [0-2])\ 2))(?:(?:1 [6-9] | [2-9] \ d)? \ d 2)$ | ^(?:29(\ / | - | \。)0?2 \ 3(?:(?:(?:1 [6-9] | [2-9] \ d )(?:(?: 0 [48] | [2468] [048] | [13579] [26])|(?:( ?: 16 | [2468] [048] | [3579] [26])00)) ))$ | ^(?: 0?[1-9] | 1 \ d | 2 [0-8])(\ / | - | \。)(?:(?:0?[1-9]) |(?:1 [0-2]))\ 4(?:( ?: 1 [6-9] | [2-9] \ d)?\ d 2)$
日付は、テキスト+数字として、または異なる形式の数字として表示される可能性があるため、注意が必要です。 PHPはすばらしい日付関数を持っていますが、生の文字列を引っ張るときこれが常に最良の選択ではありません。代わりに、この特定の日付構文用に作られたこの正規表現を使用することを検討してください。 (ソース)
15. YouTube動画IDの一致
/http:\/\/(?:youtu\.be\/|(?:[az]2,3\.)?youtube\.com\/watch(?:\?|#\!)v =)([\ w - ] 11)。* / gi
YouTubeは長年同じURL構造を維持してきました。また、Web上で最も人気のあるビデオ共有サイトでもあるため、YouTubeのビデオは最もトラフィックが多い傾向があります。.
あなたがURLからYouTubeのビデオIDを引き出す必要があるならば、この正規表現コードは完璧であり、YouTubeのURL構造のすべての変形に対して完璧に動作するはずです。 (ソース)
16.有効なISBN
/ \ b(?:ISBN(?::?|))?((??97 [89])?\ d 9 [\ dx])\ b / i
印刷された本は、ISBNとして知られている番号付けのシステムに従います。 ISBN-10とISBN-13の違いを考慮すると、これはかなり面倒になることがあります。.
しかし、この素晴らしいスニペットでは、ISBN番号を検証してISBN10か13かを確認できます。すべてのコードはPHPで記述されているため、Web開発者にとって非常に便利です。 (ソース)
17.郵便番号を確認する
^ \ d 5(?:[ - \ s] \ d 4)?$
このスニペットの作成者は自分の作品を無料で公開しただけでなく、それを説明するために時間をかけました。典型的な5桁の郵便番号とより長い9桁のバージョンのどちらに一致させる場合でも、このスニペットは便利です。.
これは主にアメリカの郵便番号システムを対象としているため、他の国では調整が必要になることがあります。 (ソース)
18.有効なTwitterのユーザー名
/ @([A-Za-z0-9 _] 1,15)/
これは、文字列で見つかったTwitterのユーザー名と照合するための非常に小さなコードスニペットです。チェックします @メンション ツイートの内容を自動的にスキャンするのに最適な構文。 (ソース)
19.クレジットカード番号
^(?:4 [0-9] 12(?:[0-9] 3)?| 5 [1-5] [0-9] 14 | 6(?:011 | 5 [ 0-9] [0-9])[0-9] 12 | 3 [47] [0-9] 13 | 3(?:0 [0-5] | [68] [0-9 ])[0-9] 11 |(?:2131 | 1800 | 35 \ d 3)\ d 11)$
クレジットカード番号を検証するには、オンラインの他の場所にホストされている安全なプラットフォームが必要になることがよくあります。しかし、正規表現は典型的なクレジットカード番号の最低限の必要条件のために使われることができます.
個々のカードのためのコードのより包括的なリストはここで見つけることができます。これには、Visa、MasterCard、Discover、その他多数が含まれます。 (ソース)
20. CSSの属性を探す
^ \ s * [a-zA-Z \ - ] + \ s * [:] 1 \ s [a-zA-Z0-9 \ s。#] + [;] 1
CSS上で正規表現を実行することはめったにないかもしれませんが、それは信じられないほど奇妙な状況でもありません.
このコードスニペットは、個々のセレクタから、一致するCSSプロパティと値をすべて取り出すために使用できます。 CSSのチャンクを表示したり、重複したプロパティを削除したりするなど、さまざまな理由で使用できます。 (ソース)
21. HTMLコメントを削除する
何らかの理由でHTMLのブロックからすべてのコメントを削除する必要がある場合、これが使用する正規表現コードです。式とともに、preg_replaceを使用したPHPの例を見つけることができます。 (ソース)
22. FacebookのプロフィールURL
/(?:http:\/\/)?(?:www\.)?facebook\.com\/(?:(?:\w)*#!\/)?(?:pages\/)? (?:[\ w \ - ] * \ /)*([\ w \ - ] *)/
Facebookは非常に人気があり、さまざまなURLスキームを採用しています。ユーザーからプロファイルURLを取得している状況では、文字列を解析して、それらが適切に構造化されていることを確認することが役立つ場合があります。このスニペットはまさにそれを行うことができ、それはすべてのFBスタイルのリンクに最適です。 (ソース)
23. Internet Explorerのバージョンを確認する
^。* MSIE [5-8](?:\。[0-9] +)?(?!。* Trident \ / [5-9] \ .0)。* $
MicrosoftのEdgeへの移行は全会一致ではなく、多くの人が依然として従来のInternet Explorerに頼っています。開発者は多くの場合、レンダリングエンジンとの矛盾を処理するためにIEのバージョンを確認する必要があります。.
このスニペットをJavaScriptで使用して、使用されているInternet Explorerのバージョン(5〜11)に基づいてブラウザエージェントをテストできます。 (ソース)
24.価格を抽出する
/(\$[0-9,]+(\.[0-9]2)?)/
価格設定には、小数点、カンマ、通貨記号を含むさまざまな形式があります。この正規表現は、あらゆる文字列から価格を引き出すためにこれらすべての異なるフォーマットをチェックすることができます。 (ソース)
25.電子メールヘッダを解析する
/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]2,6\b/i
この一行のコードで、あなたは引き出すために電子メールのヘッダを通して分析することができます “に” ヘッダからの情報。複数のEメールを結合して使用することができます。.
このタスクで正規表現を避けたい場合は、代わりに解析ライブラリに頼ることができます。 (ソース)
26.特定のファイルタイプに合わせる
/^(.*¥.(?!(htm|html|class|js)$))?[^.]*$/i
.xml、.html、および.jsなどのさまざまなファイル形式を扱っている場合は、ローカルでもユーザーがアップロードしてもファイルをチェックするのに役立ちます。このスニペットは、必要に応じて変更できる一連の有効な拡張子から有効かどうかを確認するためにファイル拡張子を取得します。 (ソース)
27. URL文字列を照合する
/[-a-zA-Z0-9@:%_\+.~#?&//=]2,256\.[az]2,4\b(\/[-a-zA-Z0 -9 @:%_ \ +。〜#?&// =] *)?/ gi
このスニペットは、テキストが従来のTLDドメイン構文に一致するかどうかを確認するために、HTTPS文字列とHTTP文字列の両方に使用できます。 JavaScriptのRegExpを使ったこの正規表現の簡単な実装もあります。 (ソース)
28. rel =を追加”フォローなし” リンクへ
(] *)(href = "https?://)((?!(?:(?:www \。)? '。implode(' |(?:www \。)? '、$ follow_list)。')) )[^ "] +)"((?!。* \ brel =)[^>] *)(?:[^>] *)>
HTMLコードのバッチを使用している場合は、手作業を繰り返しの作業に適用するのは面倒です。正規表現はこの場合に最適であり、それらは全体の時間を節約します。.
このスニペットは、HTMLブロックからすべてのアンカーリンクを取得して、 rel =”フォローなし” すべての要素に対する属性。このコードを書いた開発者は、生の式に加えて実用的な例をPHPで公開するのに十分親切でした。.
29.メディアクエリの一致
/ @ media([^ ] +)\ ([\ s \ S] +?)\ s * / g
CSSメディアクエリをそれらのパラメータとプロパティに分割します。これは、コードがどのように動作するかに、より直接的な焦点を当てながら、外部のCSSをよりクリーンに分析するのに役立ちます。 (ソース)
30. Google検索の構文
/([+-]?(?:'.+?'|".+?"|[^+\-] 1 [^] *))/ g
Googleの商標構文を使用して検索可能なテキストを操作するための独自の正規表現コードを作成できます。プラス記号(+)は追加のキーワードを示し、マイナス記号( - )は無視して結果から削除する必要がある単語を示します。.
これはかなり複雑なスニペットですが、適切に使用すると、独自の検索アルゴリズムを構築するための基礎を提供できます。 (ソース)
要約
マスタリング正規表現への道は長いですが、それに固執すればやりがいがあります。典型的な正規表現ツールを超えて勉強するための最良の方法は繰り返しです。これらの正規表現スニペットに依存するWebアプリケーションを構築して、実際に機能しているWebアプリケーションでそれらがどのように機能するかを学習してください。そして、あなたが下のコメント欄にそれらを投稿できることを示唆する他のスニペットがあれば.
今読む:
すべてのデザイナーが持つべき50の便利なCSSスニペット