node.jsのいろいろなモジュール41 – 正規表現をメソッドチェーンで実行する

2013.08.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

VerbalExpressionsとは

VerbalExpressionsは、関数をチェーンさせて正規表現ルールを記述するためのモジュールです。
今回紹介するJavaScript用モジュールは、nodeでもクライアントサイドでも使用可能です。
JavaScriptだけでなく、JavaやPython、Clojure等にもそれぞれモジュールがあるようです

今回はREADMEにものっている例を見ながらVerbalExpressionsを試してみましょう。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Node.js : v0.10.8
  • npm : 1.2.23

npmを使用してモジュールをインストールしましょう。

% npm install verbal-expressions

サンプルコード

ではGithubにのっている、URLをチェックする例をみてみましょう。
verbal-expressionsをrequireし、関数をチェーンさせてURLの正規表現を定義し、test関数でチェックしています。

var VerEx = require("verbal-expressions");
var tester = VerEx()
            .startOfLine()
            .then( "http" )
            .maybe( "s" )
            .then( "://" )
            .maybe( "www." )
            .anythingBut( " " )
            .endOfLine();

// Create an example URL
var testMe = "https://www.google.com";

// Use RegExp object's native test() function
if( tester.test( testMe ) ) {
 console.log( "We have a correct URL ");
} else {
 console.log( "The URL is incorrect" );
}

各関数はここに解説がのっていますが、
then/maybe/anythingButを組み合わせてURLをチェックしています。

ちなみに、Githubにはfindとreplace関数をつかって文字列内容を置換する例も記述しています。

// Create a test string
var replaceMe = "Replace bird with a duck";

// Create an expression that seeks for word "bird"
var expression = VerEx().find( "bird" );
var result = replaceMe.replace( expression, "duck" );

console.log( result ); // Outputs "Replace duck with a duck"

find関数で「bird」という単語を検索し、「duck」に置き換えています。

まとめ

慣れていれば既存の正規表現はとても使いやすいと思いますが、
こういったメソッドチェーン形式で組み立てていくのも理解しやすいかもしれません。

参考サイトなど