Javascript Typescript验证器在InternetExplorer中模式RegEx意外的量词错误,但在GoogleChrome中有效
下面的代码片段导致Internet Explorer抛出一个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(“”[ 验证器。必
意外的量词错误
,但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
就可以了。您的表达式不需要seg
,因此这不适用于您。可能重复的