标题重写为:"在使用 u 标志时有效,但在使用 v 标志时无效的正则表达式"
P粉684720851
P粉684720851 2023-08-25 15:47:43
[HTML讨论组]

我在这个正则表达式模式中遇到了下面的控制台警告:

^[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]+$ 是使用 RegExp u 标志有效的,但不适用于 v 标志:Uncaught SyntaxError: Invalid regular expression: /^[a-zA-Z0-9+_.-]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/v: 字符类中有无效字符。

我无法看出如何创建一个有效的正则表达式模式来解决这个警告。请问有人能解释一下错误以及如何解决吗?

尝试查看文档,但无法找到如何使其适用于 v 标志。

P粉684720851
P粉684720851

全部回复(1)
P粉116631591

问题在于新引入的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"))
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号