Javascript Typescript验证器在InternetExplorer中模式RegEx意外的量词错误,但在GoogleChrome中有效

Javascript Typescript验证器在InternetExplorer中模式RegEx意外的量词错误,但在GoogleChrome中有效,javascript,regex,typescript,Javascript,Regex,Typescript,下面的代码片段导致Internet Explorer抛出一个意外的量词错误,但Chrome运行正常 sicmessage: new FormControl('', [ Validators.required, Validators.maxLength(300), Validators.pattern(new RegExp(/(?=(?:^\w))([A-Za-z ]+)(?<=[^ ])$/)) ]), sicmessage:newformcontrol(“”[ 验证器。必

下面的代码片段导致Internet Explorer抛出一个
意外的量词错误
,但Chrome运行正常

sicmessage: new FormControl('', [
   Validators.required, Validators.maxLength(300), 
   Validators.pattern(new RegExp(/(?=(?:^\w))([A-Za-z ]+)(?<=[^ ])$/))
]),
sicmessage:newformcontrol(“”[
验证器。必需,验证器。最大长度(300),

模式(新的RegExp(/(?=(?:^\w))([A-Za-z]+)(?您的模式使用lookback,直到ES2018才添加到JavaScript中。IE11没有也永远不会有该功能

如果您需要lookbehind,您可以使用Steven Levithan提供的,它支持lookbehind(并编译为原生正则表达式)。他还介绍了如何在不支持lookbehind时模拟lookbehind


旁注:没有理由将正则表达式传递到
RegExp
构造函数中(不再)。
/…/
语法创建正则表达式,因此只需删除
新的RegExp(


“不再”-过去人们之所以这样做是因为一些JavaScript引擎中存在缓存错误,但多年前就已经修复了。有时,当表达式带有全局标志时,人们也会使用它来重置
lastIndex
,但在这种情况下,只需执行
x.lastIndex=0
就可以了。您的表达式不需要se
g
,因此这不适用于您。

可能重复的