2010-12-12 7 views
3
の正規表現
String.prototype.is_email = function() { 
     return this.match(/[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b/); 
    }; 

を壊すん。/regex /構文を使用して正規表現を分割するにはどうすればよいですか?は、どのように私はクロージャリンター(<a href="http://code.google.com/closure/utilities/docs/linter_howto.html" rel="nofollow">http://code.google.com/closure/utilities/docs/linter_howto.html</a>)の下で、lintのすべての私のjavascriptファイルを取得しようとしているJavaScriptの

行24、E:0110:行が長すぎます(200文字)。 0個の新しいエラーを含む1個のエラーが1個のファイル(0個のファイルはOK)に見つかりました。

答えて

6

RegExp(pattern, modifiers)を使用して、パターンを文字列として渡すことができます。文字列は、連結を使用して小さな部分に構築することができます。

+0

これは、ちょっと複雑な正規表現の各部分にコメントを付けるという利点があります。いい答え。 – Chubas

+4

警告:これを行うと、正規表現の各バックスラッシュの前に余分なバックスラッシュを入れることを覚えておく必要があります。 –

2

非常にハック:\を付加することにより、その改行をエスケープし、それが今まで考慮されてからそれを防ぐために、後に直接{0}を置き、(小さなものに長いラインを破るために)正規表現で改行を追加します。..

var regex = /abc\ 
{0}def/; 

regex.test("abcdef") // true 
regex.text("abc\ndef") // false 
0

正規表現を組み合わせて、デバッグを管理しやすくするシンプルな関数を作成しました。

var joinRegExp = function() { 
    var args = Array.prototype.slice.call(arguments); 
    return new RegExp(args.reduce(function(str, exp) { 
     return str + exp.toString().replace(/\//g, ''); 
    }, '')); 
    }; 

このように表現を壊す可能性があります。

var local = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+/; 
var localOpt = /(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*/; 
var domain = /(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+/; 
var tld = /(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b/; 

次に参加してください。

var emailPattern = joinRegExp(local, localOpt, /@/, domain, tld); 

このplunkからデモをご覧になれます。

関連する問題

 関連する問題