【发布时间】:2021-08-11 06:01:56
【问题描述】:
我目前有一个用例,我想匹配文本中的所有 http:// 和 https:// 字符串,但前提是它们不使用 JavaScript 以 " 或 ' 开头。
如果它们以另一个字符开头,例如空格,我仍然只想匹配 http:// 或 https:// 而没有前面的字符。
我当前的正则表达式使用了否定的lookbehind,但我刚刚意识到这在 Safari 中不受支持:
/(?<!["'])(https?:\/\/)/gm
那么,使用否定的lookbehind匹配文本中的以下字符串的替代方法是什么:
-
http://-> 应该匹配http:// -
https://-> 应该匹配https:// -
xhttps://-> 应该匹配https://其中x可以是除"和'之外的任何字符 -
"https://-> 根本不应该匹配
【问题讨论】:
-
试试
/^(?!.*["']https?:\/\/).*(https?:\/\/)/gm -
@anubhava 这将仅匹配文本中的第一个
https?://。我的目标是匹配所有https?://,即使它们位于文本中间。 -
好的,然后使用:
(?:^|[^"'])(https?:\/\/) -
不要看完整匹配,看捕获的组#1
标签: javascript regex negative-lookbehind