正規表現
正規表現. regular expressions) — メタ文字の使用に基づいて、テキスト内の文字列を検索および操作するための形式言語。
正規表現を使用すると、次のことができます。
- 文字列内のテキストを検索します
- 文字列内の部分文字列を置き換えます
- 文字列から情報を抽出します
JavaScript, と一緒に から Perl, これは、正規表現のサポートが言語に直接組み込まれているプログラミング言語の1つです。
使いにくい
正規表現の欠点は、それらがしばしば奇妙で威圧的にさえ見えることです。これは、より複雑なテンプレートに特に当てはまります。.
let regExp = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/
正規表現の定義
正規表現の定義は、文字列の処理が行われることに基づいてテンプレートを作成することです。に JavaScript 正規表現は、2つの方法で定義できるオブジェクトです。
- Литерал
- Конструкция
リテラルを使用した正規表現の定義。正規表現の場合、スラッシュはリテラルです / ... /
, それらは括弧と同じ役割を果たします ' ... '
文字列を作成するとき.
let regExp = /テンプレート/
リテラルを使用して正規表現を作成する場合は、そのような作成方法では、指定された値の動的な変更が許可されないことに注意してください。これは、スクリプトが解析されるときに正規表現リテラルがprecompilationを引き起こすという事実によるものです。.
コンストラクターを使用して正規表現を定義します。
let regExp = new RegExp('テンプレート')
コンストラクターを使用して作成された正規表現のコンパイルは、スクリプトの実行時に行われます。この作成方法は、動的に生成された文字列から正規表現を作成する場合に使用する価値があります。
使用する
例を使用して正規表現の使用を見てみましょう。:
let regExp = /banana/
このコードで私たちは文字列を検索する単純な正規表現を作成しました banana
. 正規表現をテストするには、次の方法を使用できます。 .test(string)
, メソッドの結果は次のとおりです。 boolean
値.
この例では、正規表現は部分文字列を検索します banana
列をなして str
.
アンカー
アンカーは、パターンを行の最初または最後に結び付けます。行の先頭にバインドするには、 - ^
, そして最後までに - $
.
このようなテンプレートを使用する /banana/
あなたは探しているでしょう banana
全行で。文字列とテンプレートが完全に一致するかどうかを確認する必要がある場合は、アンカーを使用する必要があります /^banana$/
. 方法 .test()
戻ります true
行全体が banana
.
フラグ
フラグは、正規表現検索を拡張するために使用されます。
g
- 検索するときは、すべての一致を検索します。i
- 検索では大文字と小文字が区別されません[Z-z]
;m
- マルチラインモード;s
- モードをオンにします dotall, その時点で.
改行文字と一致させることができます。y
- プロパティの位置にある文字から検索します lastindex 現在の正規表現。u
- サポートが含まれています Unicode. 使用する 正規表現パターンを作成するさまざまな方法のフラグ
- リテラル
- 設計
let regExp = /テンプレート/国旗 // prettier-ignore
フラグは неотъемлемой частью 正規表現。フラグを後で追加または削除することはできません。フラグを組み合わせることもできます。
フラグを削除してみてください i
例から.
let regExp = new RegExp('テンプレート', '国旗')
フラグは 整数部 正規表現。フラグを後で追加または削除することはできません。フラグを組み合わせることもできます。
フラグを削除してみてください i
例から。検索では大文字と小文字が区別されるようになりました。
合計
このトピックは非常に広範であり、開発で使用されることはめったにないため、興味がある場合は、より詳細に理解することができます。 ここに, ここに そしてここ.
問題?
Discord または電報 チャット, また、私たちの購読 ニュース s
質問と回答
正規表現とは何ですか?
- テンプレートの作成
- 文字列操作
- 文字列の編集
文字通り正規表現を作成するために使用される文字は何ですか?
- スラッシュ
/
- バックスラッシュ
\
- 角括弧
[]
指定された値をさらに動的に変更できない正規表現を作成する方法は何ですか?
- 文字通り
- コンストラクター内
- どの方法でも、動的な変更は許容されます
このレッスンをどれだけ学んだかを理解するために、 モバイルアプリ このトピックについて私たちの学校で.
リンク
Contributors ✨
Thanks goes to these wonderful people (emoji key):
IIo3iTiv | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |