クイックスタート
チュートリアル
ツールと言語
リファレンス
書籍レビュー
正規表現ツール
grep
PowerGREP
RegexBuddy
RegexMagic
一般的なアプリケーション
EditPad Lite
EditPad Pro
言語とライブラリ
Boost
Delphi
GNU (Linux)
Groovy
Java
JavaScript
.NET
PCRE (C/C++)
PCRE2 (C/C++)
Perl
PHP
POSIX
PowerShell
Python
R
Ruby
std::regex
Tcl
VBScript
Visual Basic 6
wxWidgets
XML Schema
Xojo
XQuery と XPath
XRegExp
データベース
MySQL
Oracle
PostgreSQL
このサイトのその他の情報
はじめに
正規表現クイックスタート
正規表現チュートリアル
置換文字列チュートリアル
アプリケーションと言語
正規表現の例
正規表現リファレンス
置換文字列リファレンス
書籍レビュー
印刷可能な PDF
このサイトについて
RSS フィードとブログ
RegexBuddy—The best regex editor and tester for XRegExp developers!

JavaScript 用 XRegExp 正規表現ライブラリ

XRegExp は、Steven Levithan によって開発されたオープンソースの JavaScript ライブラリです。すべてのモダンブラウザと、多くの古い、さらには非常に古いブラウザバージョンをサポートしています。 Node.js を使用してサーバー上でも使用できます。 XRegExp は xregexp.com からダウンロードできます。

JavaScript の組み込み RegExp オブジェクトの代わりに XRegExp オブジェクトを使用すると、より多くの機能とブラウザ間の非互換性の少ない正規表現構文が提供されます。注目すべき追加機能には、フリースペーシング名前付きキャプチャモード修飾子Unicode カテゴリ、ブロック、およびスクリプトなどがあります。また、無効なエスケープや存在しない後方参照をエラーとして扱います。

XRegExp は独自のreplace()メソッドも提供しています。このメソッドは、名前付き後方参照で強化され、ブラウザ間の非互換性のない置換テキスト構文を使用します。また、JavaScript 標準に完全に準拠したsplit()メソッドも提供します。

XRegExp を使用するには、まずvar myre = XRegExp('regex', 'flags')を使用して正規表現オブジェクトを作成します。ここで、flags はg(グローバル)、i(大文字と小文字を区別しない)、m(アンカーは改行位置で一致する)、s(ドットは改行と一致する)、x(フリースペーシング)、およびn(明示的なキャプチャ) を組み合わせたものです。XRegExp 3 では、Unicode プロパティとブロックを照合するときに U+FFFF を超える Unicode 文字を含むA(アストラル) フラグが追加されました。ECMAScript 6 のフラグy(スティッキー) とu(Unicode) は、それらをネイティブにサポートするモダンブラウザで使用できますが、これらのフラグの組み込みサポートがないブラウザではエラーが発生します。

次に、構築した XRegExp インスタンスをさまざまな XRegExp メソッドに渡すことができます。 XRegExp のすべての機能を利用するには、以下に示すように呼び出しを行うことが重要です。XRegExp コンストラクタによって返されるオブジェクトは、ネイティブの JavaScript RegExp オブジェクトです。そのオブジェクトのメソッドは、ブラウザの組み込み RegExp メソッドです。組み込みの RegExp メソッドを XRegExp のメソッドに置き換えるには、XRegExp.install('natives')を呼び出します。これを行うと、通常の RegExp コンストラクタまたはスラッシュで囲まれた正規表現リテラルによって構築された RegExp オブジェクトにも影響します。

XRegExp.test(str, regex, [pos=0], [sticky=false])は、正規表現が文字列の一部と一致できるかどうかをテストします。pos引数は、一致の試行を開始する文字列内のゼロベースのインデックスです。trueまたは'sticky'stickyパラメータに渡すと、一致はposでのみ試行されます。これは、他のフレーバーで正規表現の先頭に試行開始アンカー\G(XRegExp はサポートしていません) を追加するのと似ています。

XRegExp.exec(str, regex, [pos=0], [sticky=false])XRegExp.test()と同じように動作しますが、nullまたは配列を返します(falseまたはtrueの代わりに)。配列のインデックス 0 には、正規表現全体の一致が保持されます。インデックス 1 以降には、キャプチャグループによって一致したテキストが保持されます(存在する場合)。正規表現に名前付きキャプチャグループがある場合、それらの一致は XRegExp 4 以前では配列のプロパティとして使用できます。 XRegExp 5 では、配列にはgroupプロパティがあり、これにはキャプチャグループの名前がプロパティとして含まれています。XRegExp.exec()lastIndexプロパティに依存しないため、そのプロパティに関するブラウザ間の問題を回避できます。

XRegExp.forEach(str, regex, callback)を使用すると、文字列内の正規表現のすべての一致を簡単に反復処理できます。常にすべての一致を反復処理します。globalフラグとlastIndexプロパティに関係なく。コールバックは 4 つの引数で呼び出されます。最初の 2 つはexec()によって返されるような配列と、一致が開始される文字列内のインデックスです。最後の 2 つは、strregexで、forEach().

に渡したものとまったく同じです。XRegExp.replace(str, regex, replacement, [scope])は、regex内にあるstrの一致をreplacementに置き換えた文字列を返します。'one'またはまたは'all'scope引数として渡して、最初の一致のみ、またはすべての一致を置き換えます。 scope 引数を省略した場合、regex.global

フラグによって、最初の一致のみを置き換えるか、すべての一致を置き換えるかが決まります。XRegExp.replace()メソッドは独自の置換テキスト構文を使用します。これはネイティブの JavaScript 構文と非常によく似ています。有効な置換トークンを形成しないドル記号をエラーにすることで、多少互換性がありません。しかし、その利点は、ブラウザ間のすべての非互換性を解消することです。$$は、単一のリテラルドル記号を挿入します。$&$0は、正規表現全体の一致を挿入します。$`$'は、正規表現の一致の左側と右側の対象文字列の一部を挿入します。$n, $nn, ${n}、および${nn}番号付き後方参照ですが、${name}名前付き後方参照です。

関数をreplacementパラメータとして渡すと、3 つ以上の引数で呼び出されます。最初の引数は一致した文字列で、名前付きキャプチャグループはその文字列のプロパティを介して使用できます。 2 番目以降の引数は、正規表現内の各キャプチャグループによって一致した文字列です (存在する場合)。最後の 2 つの引数は、一致が見つかった文字列内のインデックスと元の対象文字列です。

XRegExp.split(str, regex, [limit])は、String.prototype.splitの代替です。文字列を分割するための JavaScript 標準に正確に従い、ブラウザ間のすべての非互換性とバグを解消します。

| クイックスタート | チュートリアル | ツールと言語 |  | リファレンス | 書籍レビュー |

| grep | PowerGREP | RegexBuddy | RegexMagic |

| EditPad Lite | EditPad Pro |

| Boost | Delphi | GNU (Linux) | Groovy | Java | JavaScript | .NET | PCRE (C/C++) | PCRE2 (C/C++) | Perl | PHP | POSIX | PowerShell | Python | R | Ruby | std::regex | Tcl | VBScript | Visual Basic 6 | wxWidgets | XML Schema | Xojo | XQuery と XPath | XRegExp |

| MySQL | Oracle | PostgreSQL |