node.jsで正規表現を使う

node.jsで正規表現を使う

node.jsで正規表現を使う例です。

配列のfilterメソッドで正規表現を使うと便利に抽出する事ができます。

正規表現.testメソッドでマッチする場合true、しない場合falseを返します。

正規表現.execメソッドを使えばマッチした箇所が配列になって返ってきます。

const regexp = /ほげほげ/g

gオプションは同一行の同じ文字を全て対象とします。

iオプションは大文字小文字を無視(ignoreのi)します。

exec()メソッド

exec()メソッドを使った例です。引数に対象の文字列を指定します。

const str = "/var/db/hoge/test1/Android.json";
const regexp = /\/var\/db\/hoge\/(.*?)\/(iPhone|Android)\.json/g;
 
let match;
if ((match = regexp.exec(str))!== null) {
  console.log(match[0]) // /var/db/hoge/test1/Android.json
  console.log(match[1]) // test1
  console.log(match[2]) // Android
}

配列の0要素にはマッチした場合の比較対象の文字列が返ってきます。execメソッドで便利なのはマッチした正規表現の箇所が配列の添え字=1から連番で返ってくる点です。

test()メソッド

test()メソッドを使った例です。引数に対象の文字列を指定します。戻り値はtrue/falseです。

const str = "/var/db/hoge/test1/Android.json";
const regexp = /\/var\/db\/hoge\/(.*?)\/(iPhone|Android)\.json/g;
 
console.log(regexp.test(str)) // true

JSの正規表現で注意しないといけないのですが、testしてexecすると動作が変わってしまいます。

const str = "/var/db/hoge/test1/Android.json";
let regexp = /\/var\/db\/hoge\/(.*?)\/(iPhone|Android)\.json/g;
console.log(regexp.test(str)) // true
console.log(regexp.exec(str)) // nullになってしまう

(.*?)

正規表現でいう最短マッチです。(.*?)で最短マッチすることができます。

[]内でエスケープは不要

phpのpreg_match関数だと以下のようにエスケープが必要ですがjsでは[]内ではエスケープ不要です。

php

/^[\w\-@\.]+$/

js

/^[\w-@.]+$/

\wは特別な意味を持ちます( 大文字/小文字の英字、数字、アンダースコア)ので\は必要です。

コメント

タイトルとURLをコピーしました