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/);
  };

我正在尝试让我的所有 javascript 文件在关闭 linter (http://code.google.com/closure/utilities/docs/linter_howto.html)下进行 lint;如何使用 /regex/ 语法分解正则表达式。

第 24 行,E:0110:行太长(200 个字符)。在 1 个文件中发现 1 个错误,包括 0 个新错误(0 个文件正常)。

4

3 回答 3

6

您可以使用RegExp(pattern, modifiers)并将模式作为字符串传递。可以使用连接将字符串分成小部分。

于 2010-12-12T00:17:07.370 回答
2

非常hackish:在正则表达式中添加一个换行符(将长行分成较小的行),通过在前面加上a来逃避该换行符\并将a{0}直接放在它之后以防止它被考虑在内,永远......

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

regex.test("abcdef")   // true
regex.text("abc\ndef") // false
于 2010-12-12T00:22:51.713 回答
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以获取演示。

于 2015-03-30T19:15:42.217 回答