JavaScript の正規表現

正規表現 (英語: Regular Expression、コード内では regex、regexp、または RE と略されることがよくあります) は、単一の文字列を使用して、特定の構文ルールに準拠する一連の文字列検索パターンを記述し、一致させます。

テキスト検索とテキスト置換に使用できる検索モード。


正規表現とは何ですか?

正規表現は、一連の文字によって形成される検索パターンです。

テキスト内のデータを検索する場合、検索パターンを使用してクエリの対象を説明できます。

正規表現には、単純な文字またはより複雑なパターンを使用できます。

正規表現は、すべてのテキスト検索およびテキスト置換操作に使用できます。

文法

/pattern/modifiers;

例:

var patt = /phpl/i

分析例:

/php/i は正規表現です。

php はパターン (検索に使用されます) です。

i は修飾子です (検索では大文字と小文字は区別されません)。


文字列メソッドの使用

JavaScript では、通常、正規表現は 2 つの文字列メソッド search() と replace() で使用されます。

search() メソッドは、文字列内の指定された部分文字列を取得するか、正規表現に一致する部分文字列を取得するために使用され、部分文字列の開始位置を返します。

replace() メソッドは、文字列内の一部の文字を他の文字に置き換えたり、正規表現に一致する部分文字列を置き換えたりするために使用されます。


search()メソッドは正規表現を使用します

正規表現を使用して、大文字と小文字を区別せずに「php.cn」文字列を検索します:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>PHP中文网(php.cn)</title>
</head>
<body>
<p>搜索字符串 "php.cn", 并显示匹配的起始位置:</p>
<button onclick="myFunction()">点我</button>
<p id="demo"></p>
<script>
    function myFunction() {
        var str = "Visit php.cn!";
        var n = str.search(/php.cn/i);
        document.getElementById("demo").innerHTML = n;
    }
</script>
</body>
</html>

プログラムを実行して試してください


search() メソッドは文字列を使用します

検索メソッドはパラメータとして文字列を使用できます。文字列パラメータは正規表現に変換されます:

文字列内の「php.cn」の部分文字列を取得します:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>PHP中文网(php.cn)</title>
</head>
<body>
<p>搜索字符串 "php.cn", 并显示匹配的起始位置:</p>
<button onclick="myFunction()">点我</button>
<p id="demo"></p>
<script>
    function myFunction() {
        var str = "Visit php.cn!";
        var n = str.search("php.cn");
        document.getElementById("demo").innerHTML = n;
    }
</script>
</body>
</html>

プログラムを実行して試してください


replace()メソッド正規表現を使用します。 Expression

正規表現と大文字小文字を区別して、文字列内の Microsoft を php.cn に置き換えます:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>PHP中文网(php.cn)</title>
</head>
<body>
<p>替换 "microsoft" 为 "php.cn" :</p>
<button onclick="myFunction()">点我</button>
<p id="demo">请访问 Microsoft!</p>
<script>
    function myFunction() {
        var str = document.getElementById("demo").innerHTML;
        var txt = str.replace(/microsoft/i,"php.cn");
        document.getElementById("demo").innerHTML = txt;
    }
</script>
</body>
</html>

プログラムを実行して試してください


replace() メソッド文字列を使用する

replace() メソッドはパラメータとして文字列を受け取ります:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PHP中文网(php.cn)</title>
</head>
<body>
<p>替换 "Microsoft" 为 "php.cn" :</p>
<button onclick="myFunction()">点我</button>
<p id="demo">请访问 Microsoft!</p>
<script>
function myFunction() {
    var str = document.getElementById("demo").innerHTML; 
    var txt = str.replace("Microsoft","php.cn");
    document.getElementById("demo").innerHTML = txt;
}
</script>
</body>
</html>

プログラムを実行して試してください


ヒント:

上記のメソッドでは正規表現パラメータを使用できます (代わりに)文字列パラメータの)。
正規表現を使用すると、検索機能がより強力になります (例では大文字と小文字が区別されないなど)。


正規表現修飾子

修飾子はグローバル検索で大文字と小文字を区別しないことができます:

修飾子説明
iPerform活動性の一致。
gグローバルマッチングを実行します(最初の一致が見つかった後に停止するのではなく、すべての一致を検索します)。
m 複数行のマッチングを実行します。

正規表現パターン

角括弧は文字の範囲を検索するために使用されます:

ExpressionDescription
[abc]角括弧文字の間にあるものを検索します。
[0-9]0 から 9 までの任意の数字を見つけます。
(x|y) | で区切られたオプションを検索します。

メタキャラクターは特別な意味を持つ文字です:

メタキャラクター説明
d数字を見つけます。
s 空白文字を検索します。
b 単語の境界を一致させます。
uxxxx16 進数 xxxx として指定された Unicode 文字を検索します。

数量子:

数量子 説明
n+は、少なくとも 1 つの n を含む文字列と一致します。
n*は、0個以上のnを含む任意の文字列と一致します。
n?は、0または1つのnを含む文字列と一致します。

RegExp オブジェクトの使用

JavaScript では、RegExp オブジェクトは、事前定義されたプロパティとメソッドを持つ正規表現オブジェクトです。


test()を使う

test()メソッドは正規表現メソッドです。

test() メソッドは、文字列が特定のパターンに一致するかどうかを検出するために使用されます。文字列に一致するテキストが含まれている場合は true を返し、そうでない場合は false を返します。

次の例は、文字列内の文字「e」を検索するために使用されます:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>PHP中文网(php.cn)</title>
</head>
<body>
<script>
    var patt1=new RegExp("e");
    document.write(patt1.test("The best things in life are free"));
</script>
</body>
</html>

プログラムを実行して試してください


上記の 2 行のコードは、正規表現変数を設定する必要はありません。 1 行にまとめる:

/e/ .test("The best things in life is free!")


exec() を使用する

exec() メソッドは正規表現メソッドです。 。

exec() メソッドは、文字列内の正規表現の一致を取得するために使用されます。

この関数は、一致する結果を格納する配列を返します。一致するものが見つからない場合、戻り値は null になります。

次の例は、文字列内の文字「e」を検索するために使用されます:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>PHP中文网(php.cn)</title>
</head>
<body>
<script>
    var patt1=new RegExp("e");
    document.write(patt1.exec("The best things in life are free"));
</script>
</body>
</html>

プログラムを実行して試してください



学び続ける
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PHP中文网(php.cn)</title> </head> <body> <p>搜索字符串 "php.cn", 并显示匹配的起始位置:</p> <button onclick="myFunction()">点我</button> <p id="demo"></p> <script> function myFunction() { var str = "Visit php.cn!"; var n = str.search(/php.cn/i); document.getElementById("demo").innerHTML = n; } </script> </body> </html>