您可以将其转换为字符串并通过调用创建表达式
new RegExp():
var myRE = new RegExp (['^(([^<>()[]\.,;:\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,}))$'].join(''));笔记:
- 将 表达式文字 转换为字符串时,您需要对所有反斜杠进行转义,因为在评估字符串文字时会消耗反斜杠。(有关更多详细信息,请参见Kayo的评论。)
RegExp
接受修饰符作为第二个参数
/regex/g=>
new RegExp('regex', 'g')[ 添加ES20xx (标记模板)]
注意:
- 这里缺点是,你不能在正则表达式字符串使用纯空格(经常使用
s
,s+
,s{1,x},t
,n
等)。
(() => { const createRegExp = (str, opts) => new RegExp(str.raw[0].replace(/s/gm, ""), opts || ""); const yourRE = createRegExp` ^(([^<>()[]\.,;: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,}))$`; console.log(yourRE); const anotherLongRE = createRegExp` (byyyyb)|(bmb)|(bdb)|(bhb)|(bmib)|(bsb)|(bmsb)| (bwdb)|(bmmb)|(bddb)|(bhhb)|(bMIb)|(bSb)|(bMSb)| (bMb)|(bMMb)|(bdowb)|(bDOWb) ${"gi"}`; console.log(anotherLongRE);})();


