ホームページ > 記事 > ウェブフロントエンド > JavaScript学習メモ(8) 正規表現_基礎知識
基本概念
正規表現は、通常の文字 (a と z の間の文字など) と特殊文字 (「メタ文字」と呼ばれる) の両方を含むテキスト パターンです。パターンは、テキストを検索するときに一致する 1 つ以上の文字列を記述します。
まず、いくつかの正規表現エディタをお勧めします
デバッグエクス: https://www.debuggex.com/
PyRegex:http://www.pyregex.com/
正規表現: http://www.regexper.com/
正規表現は、検索および文字列置換操作です。正規表現はテキスト エディタで広く使用されています。たとえば、次のような正規表現が使用されます。
[コピー] 本文中に指定した特徴語が含まれているか確認します
テキスト内で一致する特徴語の位置を検索します
テキストから次のような情報を抽出します: 文字列
の部分文字列
テキストを変更
優先順位
正規表現を構築した後は、数式のように評価できます。つまり、左から右に優先順位に従って評価できます。 次の表は、さまざまな正規表現演算子の優先順位を最高の優先順位から最低の優先順位までリストしています:
正規表現の作成
正規表現の構築は、数式の作成と同じです。つまり、さまざまなメタ文字と演算子を使用して小さな式を組み合わせて、より大きな式を作成します。
正規表現は、表現パターンのさまざまなコンポーネントを区切り文字のペアの間に配置することによって構築できます。
JScript の場合、区切り文字は 1 組のスラッシュ (/) 文字です。例:
/式/
VBScript の場合、正規表現の境界を決定するために一対の引用符 ("") が使用されます。例:
例を見てみましょう
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*?)[^>]*>.*?1>|<.*?
コメント: インターネット上で流通しているバージョンはあまりにもひどいもので、上記のバージョンは一部しか一致せず、複雑な入れ子のタグには依然として無力です
先頭および末尾の空白文字に一致する正規表現: ^s*|s*$
コメント: 行頭と行末の空白文字 (スペース、タブ、フォーム フィードなどを含む) を削除するのに使用できます。非常に便利な式
電子メール アドレスに一致する正規表現: w ([- .]w )*@w ([-.]w )*.w ([-.]w )*
コメント: フォームの検証に非常に役立ちます
URL に一致する正規表現: [a-zA-z]://[^s]*
コメント: インターネット上で流通しているバージョンは機能が非常に限られており、基本的には上記のバージョンでニーズを満たすことができます。
コメント: フォームの検証に非常に役立ちます
コメント: 0511-4405222 や 021-87888822
などの一致する形式
コメント: Tencent QQ アカウントは 10000 から始まります
コメント: 中国の郵便番号は 6 桁の数字です
コメント: 中国の ID カードは 15 桁または 18 桁です
コメント: 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 文字の英字、またはアンダースコアで構成される文字列と一致します
マインドマップ