gpt4 book ai didi

regex - 模块解析失败 : Octal literal in strict mode

转载 作者:行者123 更新时间:2023-12-05 01:15:21 26 4
gpt4 key购买 nike

我在 angular 7 中工作并使用验证联系电话

"^(?!(\d)\1+$)(?:\(?\+\d{1,3}\)?[- ]?|0)?\d{10}$"

正则表达式,但它抛出以下错误:模块解析失败:严格模式下的八进制文字 (10:76)

我已经尝试过 \\ 而不是 \ 因为根据我的发现,问题出在 \ 字符上。

registerForm = this.fb.group(
{
email:['', [Validators.required, Validators.pattern('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+.com$')]],
contact:['',[Validators.required, Validators.pattern('/^(?!(\d)\1+$)(?:\(?\+\d{1,3}\)?[- ]?|0)?\d{10}$/')]],
password:['',[Validators.required]],
confirmPassword:['',[Validators.required]]
},{ validator: PasswordMatchValidator });

有没有办法替换 \ 字符以使其工作?

最佳答案

这是一个 X-Y Problem .每个人都在关注您的原始问题标题,该标题询问有关在正则表达式中转义文字 \ 的问题。这不是问题。

首先,在 JavaScript 中,数字可以用多种方式表示。其中之一是 octal literal notation,通过在数字(字符代码)前加上 \ 来表示。

您的正则表达式包含 \1,它被解释为 octal ,这是您的错误消息。八进制转义序列 have been deprecated这就是 strictmode 抛出错误的原因,这是您面临的实际问题。

如果您通过将 \1 转义为 \\1 解决了编译错误,则您生成了 this expression parsing它执行任何单个数字的否定先行,后跟文字“\”字符,后跟数字“1”任意次数

railroad diagram of a completely broken phone number validator

您还会注意到区号括号是可选的,但它需要在左括号后的文字 +(因为它被转义为 \+)。 这肯定不是您想要的。

您想要的正则表达式可能是 one of the answers from this question

"^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$"

哪个parses to这个

railroad diagram of a fairly good phone number validator

第二,Angular's PatternValidator将字符串转换为正则表达式,因此只需传入一个字符串而不用正斜杠括起来。

关于regex - 模块解析失败 : Octal literal in strict mode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56410793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com