7

Perl でできるように、JavaScript 正規表現にコメントを埋め込む方法はありますか? ないと思いますが、私の検索では、できるかできないかを示すものは見つかりませんでした。

4

2 に答える 2

14

正規表現リテラルにコメントを埋め込むことはできません。

RegExp コンストラクターに渡す文字列構造にコメントを挿入できます。

var r = new RegExp(
    "\\b"   + // word boundary
    "A="    + // A=
    "(\\d+)"+ // what is captured : some digits
    "\\b"     // word boundary again
, 'i');       // case insensitive

しかし、正規表現リテラルは非常に便利です (どのように をエスケープしなければならなかったかに注意してください\) むしろ、正規表現をコメントから分離したいと思います。

EDIT 2018:この質問と回答は非常に古いものです。EcmaScript は、これを処理する新しい方法、より正確にはテンプレート文字列を提供するようになりました。

たとえば、ノードでこの単純なユーティリティを使用するようになりました。

module.exports = function(tmpl){
    let [, source, flags] = tmpl.raw.toString()
    .replace(/\s*(\/\/.*)?$\s*/gm, "") // remove comments and spaces at both ends of lines
    .match(/^\/?(.*?)(?:\/(\w+))?$/); // extracts source and flags
    return new RegExp(source, flags);
}

これにより、のようなことができます。

const regex = rex`
    ^         // start of string
    [a-z]+    // some letters
    bla(\d+)
    $         // end
    /ig`;

console.log(regex); // /^[a-z]+bla(\d+)$/ig
console.log("Totobla58".match(regex)); // [ 'Totobla58' ]
于 2013-11-08T17:31:18.313 に答える