gpt4 book ai didi

javascript - 正则表达式在 Chrome 上工作,但不在 Safari 中

转载 作者:行者123 更新时间:2023-12-04 03:41:54 25 4
gpt4 key购买 nike

以下正则表达式在 Chrome 上运行良好,但在 Safari 中会中断并出现以下错误:SyntaxError: Invalid regular expression: invalid group specifier name .
正则表达式:/^[a-zA-Z0-9.!#$%&'*+\-\/=?^_{|}~]+[@](?!-)[a-zA-Z0-9-]+(?<!-)[.][a-zA-Z]{2,}$/我是 Regex 的新手,所以我不知道为什么它似乎可以在 1 个浏览器上运行,而在另一个浏览器上却不起作用,无论如何我可以解决这个问题吗?
示例数据:

random#email@domain-good.com
random@domain-bad-.com
2 示例应该失败,因为它以 - 开始/结束.

最佳答案

您的模式包含后视,Safari 尚不支持后视。实际上,(?!-)[a-zA-Z0-9-]+(?<!-)模式意味着匹配一个或多个字母数字或连字符,同时禁止 -出现在此序列的开头和结尾。将此模式部分重构为 [a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)* 很简单.
所以,正则表达式看起来像

/^[a-zA-Z0-9.!#$%&'*+\-\/=?^_{|}~]+@[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*\.[a-zA-Z]{2,}$/
[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*匹配一个或多个字母数字字符,然后是任何零个或多个连字符序列,后跟一个或多个字母数字字符。
请注意,您可以简单地使用 @而不是 [@]@在任何正则表达式中都不是特别的,并且 [.]可以写成 \. ,这意味着一个文字点。

关于javascript - 正则表达式在 Chrome 上工作,但不在 Safari 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65918620/

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