首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Regex仅在Safari上失败

Regex仅在Safari上失败
EN

Stack Overflow用户
提问于 2021-03-05 20:08:12
回答 1查看 94关注 0票数 2

我有以下简单的电子邮件验证正则表达式:/(.+){2,}@(.+){2,}\.(.+){2,}/

这在Firefox、Chrome等浏览器上运行良好,但在Safari上失败。

为什么这个完全有效的正则表达式在Safari上会失败?我在regex中找不到Safari不支持的元素。

代码语言:javascript
运行
复制
/(.+){2,}@(.+){2,}\.(.+){2,}/.test('123@abc.nl');

上面在Safari上失败,但在任何其他浏览器上都不会。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-05 21:29:47

不同的正则表达式引擎对灾难性的回溯倾向模式有不同的容忍度。

这是一个灾难性的易于回溯的模式,因为您使用{2,}量词来量化(.+),该量词使(.+)匹配两次或更多次(也就是说,匹配一次或多次两次或更多次,这使得它在不匹配的模式下失败得非常慢)。

如果要匹配任意两个或更多字符,请量化.模式,而不是.+模式:

代码语言:javascript
运行
复制
/.{2,}@.{2,}\..{2,}/

或者,使用现有的email validation patterns.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66492332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档