検索
ホームページウェブフロントエンドjsチュートリアルJavaScript における正規表現の意味と使用法

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

Nov 09, 2017 pm 04:52 PM
javascriptjs表現

正規表現はご存知の方も多いと思いますが、一見すると何のパターンもなく、ただ色々な特殊な記号が羅列されているように感じられ、「難しそう」という第一印象を持たれる方も多いと思います。完全に混乱しています。実際、正規表現はあなたが思っているほど難しくありません。今日は 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 サイトの他の関連記事を参照してください。

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

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Python vs. JavaScript:学習曲線と使いやすさPython vs. JavaScript:学習曲線と使いやすさApr 16, 2025 am 12:12 AM

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Python vs. JavaScript:コミュニティ、ライブラリ、リソースPython vs. JavaScript:コミュニティ、ライブラリ、リソースApr 15, 2025 am 12:16 AM

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへ:すべてがどのように機能するかC/CからJavaScriptへ:すべてがどのように機能するかApr 14, 2025 am 12:05 AM

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

JavaScriptエンジン:実装の比較JavaScriptエンジン:実装の比較Apr 13, 2025 am 12:05 AM

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境