Pythonではreg,JavaScriptではRegExpとなっていますが、英語表現では
Regular Expressionです。それを省略している?最初にRegExp
のインスタンスを作成します。
//お堅いやり方
var reg = new RegExp('abc');
//または簡略化
var reg =/abc/;
インスタンスにはオプションをつけることができます。
例:
var reg =/abc/g;
var reg = new RegExp('abc',g);
オプション |
説明 |
g |
正規表現で最初にパターンマッチしたところで処理を終了。 |
i |
大文字小文字を区別しない。 |
m |
複数行に対応する。 |
このインスタンスはStringオブジェクトのメソッドで使われます。
var reg =/abc/;
var str="1234abc567";
var result = str.search(reg);
console.log(result);//4
CStringオブジェクトの正規表現に関するメソッドを以下に記載します。
メソッド |
説明 |
match(reg) |
正規表現のパターンregを使って、パターンマッチした文字列を返す。
var reg =/ABC/;
var str="1234abc567\nABC890";
var result = str.match(reg);
console.log(result);
resultの結果は、
文字列のインデックス11でマッチしています。
var reg =/ABC/i;
大文字小文字を区別しないi オプションを
付けると文字列のインデックス4でマッチします。しかし、インデックス11のもABCがありますが、
インデックス4でマッチすると終了になってしまいます。全体のマッチを取得するには,
matchAllを使います。
|
matchAll(reg) |
正規表現のパターンregを使って、パターンマッチした文字列すべてを返す。
var reg =/ABC/gi;
var str="1234abc567\nABC890";
const array = [...str.matchAll(reg)];
array.forEach((val) => {
console.log(val[0], "is index =", val.index);
});
オプションにgをつけないとエラーになります。結果は、
abc is index = 4
ABC is index = 11
となります。ところで、
[...str.matchAll(reg)];
ってなんだ?
var a = "abc";
console.log(...a);//a b c
console.log([...a]);//['a', 'b', 'c']
(...)はスプレッド構文 です。変数を展開して配列にします。複数にマッチした配列を
forEachで表示してます。
|
replace(reg, str) |
パターンマッチした文字列を別の文字列で置き換える。
var s = "123abc456def";
var reg = /abc/;
var t = s.replace(reg, "xyz");
console.log(t);//123xyz456def
|
search(reg) |
パターンマッチした文字列のインデックスを返す。マッチしないときは-1を返す。
var s = "123abc456def";
var reg = /abc/;
var t = s.search(reg);
console.log(t);//3
|
split(reg) |
パターンマッチした文字列で文字列を分割して配列で返す。
var s = "123,abc,456,def";
var reg = /,/;
var t = s.split(reg);
console.log(t);//) ['123', 'abc', '456', 'def']
|
|