我在这个正则表达式模式中遇到了下面的控制台警告:
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$
Pattern attribute value
^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$是使用 RegExpu标志有效的,但不适用于v标志:Uncaught SyntaxError: Invalid regular expression:/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v:字符类中有无效字符。
我无法看出如何创建一个有效的正则表达式模式来解决这个警告。请问有人能解释一下错误以及如何解决吗?
尝试查看文档,但无法找到如何使其适用于 v 标志。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题在于新引入的
v标志对转义规则施加了更多限制。由于它允许字符类的减法和交集,因此字符类末尾的字面量-不能保持未转义。因此,如果使用
u标志,就没有这样的限制,而使用v标志,则有这样的限制。参见。console.log(/^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/u.test("myname@somesite.com")) console.log(/^[a-zA-Z0-9+_.\-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v.test("myname@somesite.com"))