JavaScript における正規表現の意味と使用法

黄舟
リリース: 2017-11-09 16:52:04
オリジナル
1930 人が閲覧しました

正規表現はご存知の方も多いと思いますが、一見すると何のパターンもなく、ただ色々な特殊な記号が羅列されているように感じられ、「難しそう」という第一印象を持たれる方も多いと思います。完全に混乱しています。実際、正規表現はあなたが思っているほど難しくありません。今日は JavaScript 正規表現を簡単に理解してみましょう。

1. 正規表現とは

正規表現とは、製品を作るために金型を使用するのと同じように、一連の文字列を照合するために使用される特別な文字列パターンです。モールドは、ルールに一致する文字を照合するルールを定義します。

正規表現 (正規表現) は、文字列に特定の部分文字列が含まれているかどうかを確認したり、一致する部分文字列を置き換えたり、条件の特定の部分文字列に一致する文字列から抽出したりするために使用できる文字列一致パターン (パターン) を記述します。 。

端的に言うと、正規表現は文字列を処理するために使用されます。これを使用して、いくつかの複雑な文字列を処理できます。表 2.

正規表現のルール

1.1 通常の文字 文字、数字、漢字、下線付きの行、および後の章には特別な定義の句読点記号はありません。それが「通常の文字」です。式内の通常の文字は、文字列と一致する場合、同じ文字と一致します。

例 1: 式「c」、文字列「abcde」と一致する場合、一致結果は成功、一致した内容は「c」、一致した位置は 2 から始まり 3 で終わります。 (注: 添字が 0 から始まるか 1 から始まるかは、現在の

プログラミング言語

によって異なる場合があります)


例 2: 式 "bcd" が文字列 "abcde" と一致する場合、一致結果は次のようになります: success ;一致した内容は次のとおりです: "bcd"; 一致する位置は 1 から始まり 4 で終わります。


3.

正規表現の特殊文字


文字の意味

意味の変更として、通常、「」の後の文字は元の意味に従って解釈されません。たとえば、/b/ は、b の前にバックスラッシュが追加された場合、文字「b」と一致します。 / は単語の境界の意味を変更します。
-または-
正規表現の関数文字の削減。たとえば、「*」がその前のメタキャラクターに 0 回以上一致する場合、/a*/ は a、aa、aaa に一致し、「" を追加した後は /a* / のみに一致します」抹茶*"。

^ は入力または行の先頭に一致します。 /^a/ は「An a」ではなく「an A」に一致します。
$ は入力または行の末尾に一致します。 /a$/ は「An a」に一致します。 "An a" ではありません "an A" と一致します
* は先行するメタキャラクターに 0 回以上一致します、/ba*/ は b、ba、baa、baaa に一致します
+ は先行するメタキャラクターに 1 回以上一致します、/ba*/ はba, baa,baaa に一致します
? は前のメタ文字に 0 回または 1 回一致します、/ba*/ は b,ba に一致します
(x) は x に一致し、x を $1...$9 という名前の変数に保存します
x|y は x に一致しますまたは y
{n} は n 回正確に一致します
{n,} は n 回以上一致します
{n,m} は n-m 回一致します
[xyz] 文字セット (文字セット)、このセット (またはメタ文字) 内の任意の文字と一致します
[^xyz] はこのセット内のどの文字にも一致しません
[b] はバックスペース文字に一致します
b は単語の境界に一致します
B は非単語の境界に一致します
cX ここで、X は制御文字、/cM/ は Ctrl に一致します-M
d は英数字に一致します。 /d/ = /[0-9]/
D は英数字以外の文字に一致します。 /D/ = /[^0-9]/
n は改行文字に一致します
r復帰文字に一致します。
s は、n、r、f、t、v などの空白文字に一致します。
S は、/[^nfrtv]/ に等しい非空白文字に一致します。
t は、タブ文字に一致します。
v二重タブ文字と一致します
w は、アンダースコアを含む、単語を形成できる文字 (英数字、これは数字を含む私の意訳です) と一致します ([w] は、「$5.98」の 5 と一致します。これは、[a に等しい) -zA -Z0-9]
W は単語を構成できない文字に一致します。たとえば、[W] は「$5.98」の $ に一致します。これは [^a-zA-Z0-9] に相当します。

4. 正規表現の基本文法

2 つの特殊記号 '^' と '$'。それらの機能は、それぞれ文字列の始まりと終わりを示すことです。

例は次のとおりです。

"^The": "The" で始まるすべての文字列 ("There"、"The cat" など) を意味します。

"of death$": " で終わるすべての文字列を意味します。 of絶望" 文字列;

"^abc$": "abc" で始まり "abc" で終わる文字列を表します - 笑、"abc" 自体のみ;

"notice": "notice" を含む任意の文字列を表します。

最後の例と同様に、2 つの特殊文字を使用しない場合は、検索する文字列が検索文字列のいずれかの部分にあることを示しており、その文字列を先頭に配置しているわけではありません。

他の記号には「*」、「+」、「?」があり、これらは 1 つの文字または一連の文字が繰り返し現れる回数を表します。

それらはそれぞれ、「なしまたはそれ以上」、「1 回またはそれ以上」、「なしまたは 1 回」を意味します。


ここにいくつかの例があります:

"ab*": 文字列に a の後に 0 個または複数の b が続くことを示します。 ("a", "ab", "abbb",...);

"ab+": 文字列に少なくとも 1 つ以上の b が続くことを示します。 a の後に 0 個または 1 個の b が続く;

"a?b+$": 文字列の末尾に 0 個または 1 個の a の後に 1 個または複数個の b が続くことを意味します。

中括弧で囲まれた範囲を使用して、繰り返しの範囲を示すこともできます。

"ab{2}": 文字列に a の後に 2 つの b が続くことを示します ("abb")。

"ab{2,}": 文字列の後に少なくとも 2 つの b が続くことを示します。

"ab{3,5}": 文字列に a の後に 3 ~ 5 個の b が続くことを示します。

範囲の下限を指定する必要があることに注意してください (例: "{,2}" の代わりに "{0,2}")。

また、「*」、「+」、「?」が「{0,}」、「{1,}」、「{0,1}」と同等であることに気づいたかもしれません。

「or」演算を意味する '|' もあります。

"hi|hello": 文字列に "hi" または "hello" があることを意味します。

"(b|cd)ef": 「bef」または「cdef」を意味します;

「(a|b)*c」: 「a」と「b」の後に「c」が続く文字列を表します。'

"a.[0-9]": 文字列に「a」の後に任意の文字と数字が続くことを示します。

"^.{3}$": 任意の 3 文字の文字列 ( 3文字数);

角括弧は、特定の文字が文字列内の特定の位置に出現できることを示します。

"[ab]": 文字列に "a" または "b" ("a|b" と同等) があることを示します。

"[a-d]": 文字列に小文字の「a」から「d」のいずれかが含まれていることを示します (「a|b|c|d」または「[abcd]」と同等);

"^ [a- zA-Z]": 文字で始まる文字列を表します。

"[0-9]%": パーセント記号の前に 1 桁の数字を表します。

",[a-zA-Z0 -9]$ ": 文字列がコンマで終わり、その後に文字または数字が続くことを示します。

角括弧内で「^」を使用して、不要な文字が角括弧内の最初の文字であることを示すこともできます。

(例: "%[^a-zA-Z]%" は、2 つのパーセント記号の間に文字を含めないことを意味します)。

これをそのまま表現するには、これらの文字「^.$()|*+?{」の前にシフト文字 '' を追加する必要があります。

角括弧内ではエスケープ文字は必要ないことに注意してください。

まとめ

実は、正規表現を理解してしまうと、正規表現で使われる関連文字はそれほど多くないことが分かります。覚えるのは難しくありませんが、理解するのは難しくありません。唯一の難点は、組み合わせた後の読みやすさが悪く、理解するのが簡単ではないことです。簡単な正規表現を理解し、日常の開発のニーズを満たす簡単な正規表現を作成できるようになります。

関連する推奨事項:

js よく使用される正規表現とは何ですか

JavaScript正規表現ビデオチュートリアル

JavaScript正規表現の定義と紹介

柔軟になる方法JavaScriptを使用する正規表現

以上がJavaScript における正規表現の意味と使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!