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は特別な意味を持ちます( 大文字/小文字の英字、数字、アンダースコア)ので\は必要です。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント