打字稿:如何在 2 行中编写长正则表达式 [重复]

Posted

技术标签:

【中文标题】打字稿:如何在 2 行中编写长正则表达式 [重复]【英文标题】:Typescript: How to write long regexp in 2 lines [duplicate] 【发布时间】:2016-06-06 15:03:38 【问题描述】:

我使用 tslint,当我在 typescript 中编写长正则表达式时

var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))$/;

我收到错误 - 超过 140 的最大行长。

有没有人知道怎么写成两行。我可以通过 hack 做到这一点。但我对这个解决方案并不满意。

    var r1 = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))/;
    var r2 = /@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))$/;
    var re = new RegExp(r1.source + r2.source);

【问题讨论】:

这与 Angular2 有什么关系? 同时检查 Casimir's comment 是否有类似的电子邮件验证正则表达式。 我使用 angular2-seed 样板应用程序。并且 tslint 设置已预先设置在那里。 是的,这是重复的How to split a long regular expression into multiple lines in javascript? 我仍然希望存在更优雅的解决方案 【参考方案1】:

为什么不使用字符串?

var r1 = "^(([^<>()\[\]\\.,;:\s@\"]+(\.[^<>()\[\]\\.,;:\s@\"]+)*)|(\".+\"))";
var r2 = "@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))$";
var re = new RegExp(r1 + r2);

RegExp(string) 更容易修改和/或动态生成的正则表达式

【讨论】:

以上是关于打字稿:如何在 2 行中编写长正则表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在打字稿中应用正则表达式

打字稿和正则表达式

正则表达式测试作为属性的指令实现错误 - 验证(打字稿+角度)

具有命名属性和不同类型的任意命名索引属性的打字稿接口[重复]

在javascript中将数字转换为数组| angular7的打字稿[重复]

如何从打字稿中的数组中获取键[重复]