ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript学習メモ(8) 正規表現_基礎知識

JavaScript学習メモ(8) 正規表現_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:34:441075ブラウズ

基本概念

正規表現は、通常の文字 (a と z の間の文字など) と特殊文字 (「メタ文字」と呼ばれる) の両方を含むテキスト パターンです。パターンは、テキストを検索するときに一致する 1 つ以上の文字列を記述します。

まず、いくつかの正規表現エディタをお勧めします
デバッグエクス: https://www.debuggex.com/
PyRegex:http://www.pyregex.com/
正規表現: http://www.regexper.com/

正規表現は、検索および文字列置換操作です。正規表現はテキスト エディタで広く使用されています。たとえば、次のような正規表現が使用されます。 [コピー] 本文中に指定した特徴語が含まれているか確認します
テキスト内で一致する特徴語の位置を検索します
テキストから次のような情報を抽出します: 文字列
の部分文字列
テキストを変更

説明: 正規表現は通常、1. 検証、2. 検索/置換の 2 つのタスクに使用されます。検証に使用する場合、通常、検証する文字列全体と一致させるために、前後に ^ と $ を追加する必要があります。また、検索要件によっては、この制限を追加するかどうかも異なります。 ^ と $ の代わりに b の前後に追加します。この表に記載されている一般的に使用される正規表現には、一部を除いて制限がありません。必要に応じて独自に処理してください。

優先順位

正規表現を構築した後は、数式のように評価できます。つまり、左から右に優先順位に従って評価できます。 次の表は、さまざまな正規表現演算子の優先順位を最高の優先順位から最低の優先順位までリストしています:

正規表現の作成

正規表現の構築は、数式の作成と同じです。つまり、さまざまなメタ文字と演算子を使用して小さな式を組み合わせて、より大きな式を作成します。
正規表現は、表現パターンのさまざまなコンポーネントを区切り文字のペアの間に配置することによって構築できます。

JScript の場合、区切り文字は 1 組のスラッシュ (/) 文字です。例:
/式/

VBScript の場合、正規表現の境界を決定するために一対の引用符 ("") が使用されます。例:

コードをコピーします コードは次のとおりです:

「式」

例を見てみましょう

コードをコピーします コードは次のとおりです:

// 一致するアカウントが合法かどうか (文字で始まり、5 ~ 16 バイトが許可され、英数字のアンダースコアが許可されます

var re =new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,19}$");
if(re.test(aaaa)){
alert("正しい形式");
}その他{
alert("フォーマットエラー");
}

正規表現のコンポーネントは、単一の文字、文字のコレクション、文字の範囲、文字間の選択、またはこれらすべてのコンポーネントの任意の組み合わせにすることができます。

一般的に使用される正規表現

漢字に一致する正規表現: [u4e00-u9fa5]
コメント: 中国語のマッチングは本当に面倒です。この表現を使えば簡単になります。

全角文字 (漢字を含む) に一致: [^x00-xff]
コメント: 文字列の長さの計算に使用できます (全角文字の長さは 2 としてカウントされ、ASCII 文字の長さは 1 としてカウントされます)

空白行に一致する正規表現: ns*r
コメント: 空白行の削除に使用できます

HTML タグに一致する正規表現: <(S*?)[^>]*>.*?|<.*?
コメント: インターネット上で流通しているバージョンはあまりにもひどいもので、上記のバージョンは一部しか一致せず、複雑な入れ子のタグには依然として無力です

先頭および末尾の空白文字に一致する正規表現: ^s*|s*$
コメント: 行頭と行末の空白文字 (スペース、タブ、フォーム フィードなどを含む) を削除するのに使用できます。非常に便利な式

電子メール アドレスに一致する正規表現: w ([- .]w )*@w ([-.]w )*.w ([-.]w )*
コメント: フォームの検証に非常に役立ちます

URL に一致する正規表現: [a-zA-z]://[^s]*
コメント: インターネット上で流通しているバージョンは機能が非常に限られており、基本的には上記のバージョンでニーズを満たすことができます。

一致するアカウントは合法ですか (文字で始まり、5 ~ 16 バイトが使用可能、英数字のアンダースコアが使用可能): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$

コメント: フォームの検証に非常に役立ちます

国内の電話番号と一致します: d{3}-d{8}|d{4}-d{7}

コメント: 0511-4405222 や 021-87888822
などの一致する形式

Tencent QQ 番号と一致します: [1-9][0-9]{4,}

コメント: Tencent QQ アカウントは 10000 から始まります

中国の郵便番号に一致: [1-9]d{5}(?!d)

コメント: 中国の郵便番号は 6 桁の数字です

一致する ID カード: d{15}|d{18}

コメント: 中国の ID カードは 15 桁または 18 桁です

一致する IP アドレス: d .d .d .d

コメント: IP アドレスを抽出するときに役立ちます

特定の番号と一致する

[copy] ^[1-9]d*$ // 正の整数と一致します
^-[1-9]d*$ // 負の整数と一致します
^-?[1-9]d*$ //整数と一致
^[1-9]d*|0$ // 負でない整数 (正の整数 0) と一致します
^-[1-9]d*|0$ // 正でない整数(負の整数は 0)と一致する
^[1-9]d*.d*|0.d*[1-9]d*$ //正の浮動小数点数と一致します
^-([1-9]d*.d*|0.d*[1-9]d*)$ //負の浮動小数点数と一致する
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0 |0)$ // 浮動小数点数と一致
^[1-9]d*.d*|0.d*[1-9]d*|0?.0 |0$ //非負の浮動小数点数(正の浮動小数点数0)と一致する
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0 |0$ //非正の浮動小数点数(負の浮動小数点数)と一致0)

コメント: 大量のデータを処理する場合に役立ちます。特に適用する場合は修正に注意してください

特定の文字列と一致

[copy]^[A-Za-z] $ //26 個の英字で構成される文字列と一致します
^[A-Z] $ // 26 個の大文字の英字で構成される文字列と一致します
^[a-z] $ // 26 個の小文字の英字で構成される文字列と一致します
^[A-Za-z0-9] $ // 数字と 26 個の英字で構成される文字列と一致します
^w $ // 数字、26 文字の英字、またはアンダースコアで構成される文字列と一致します

コメント: 最も基本的でよく使用される表現のいくつか

マインドマップ

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。