node.jsのいろいろなモジュール41 – 正規表現をメソッドチェーンで実行する
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」に置き換えています。
まとめ
慣れていれば既存の正規表現はとても使いやすいと思いますが、 こういったメソッドチェーン形式で組み立てていくのも理解しやすいかもしれません。