【发布时间】:2022-11-12 19:12:52
【问题描述】:
我最近对代码进行了一些更改,并意识到更新的页面之一在 iPhone 浏览器上不起作用。果然,它没有,但在我测试的所有其他浏览器中都有效。
任何人都可以看到或提供一些见解,说明为什么这行特定的代码在 iphone 浏览器上会失败,但在其他地方有效吗? iPhone 不喜欢正则表达式,我需要使其兼容。请注意,此行上的浏览器错误并不是正则表达式本身失败(如果这有意义的话)。
我不知道如何在 iPhone 浏览器上查看调试信息以查看是否提供了任何信息。我确实知道,如果我从页面下方删除正则表达式模式,该页面将在 iPhone 上再次运行,这告诉我这就是问题所在。
return this.optional(element) || /^(\*\.|((?!-)[a-z0-9-]{1,255}(?<!-)\.))((?!-)[a-z0-9-]{1,255}(?<!-)\.)*[a-z]{2,}$/i.test(value);
【问题讨论】:
-
There is something about the regex that iPhone does not like- 这是正则表达式向后看Safari 无法理解 - caniuse.com/js-regexp-lookbehind -
@Jaromanda X - 有什么办法解决这个问题或改变正则表达式来完成同样的事情吗?
-
可能,但我不是正则表达式专家 - 事实上,如果可以的话,我会避免使用正则表达式 - 查看你发布的代码,我不知道正则表达式试图测试什么......所以,我无法提供任何替代方案- 我简单地回答了你的问题 -任何人都可以看到一些东西或提供一些见解为什么这行特定的代码会在 iphone 浏览器上失败- 由于您似乎对正则表达式足够了解以创建那段代码,那么您肯定可以找到一种解决方法(lookbehinds 最多只能在其他浏览器中工作 3 年)
标签: javascript ios regex