打字稿:如何在 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 行中编写长正则表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式测试作为属性的指令实现错误 - 验证(打字稿+角度)
具有命名属性和不同类型的任意命名索引属性的打字稿接口[重复]