如何找到给定文本中第一个 backbone.js 标记之前的 url。我尝试了所有可能性,但无法做到。
引用:https://regex101.com/r/rJ1oA8/4
文本:dfjSKsfkfkSFKfdvsfdvsdv https://text.com来自 https://test2.com sdjgdsdh https://backbone.js来自 jfsjfskf https://backbone.js jsvdywfiwqkbfs sfgsaifiwf sfasfk https://fggfgf.com
预期输出:https://test2.com
文本可以有任意数量的 url
最佳答案
我可以建议这个正则表达式:
\bhttps?:\/\/\S*(?=(?:(?!http)[\s\S])*https?:\/\/\S*backbone\.com)
(?:(?!http)[\s\S])*
是一个缓和的贪婪 token ,它确保一个 URL 和另一个具有 Backbone 的 URL 之间的窗口尽可能小。 com
.
在 JS 中,要匹配 任何 字符,甚至是换行符,你需要使用 [\s\S]
字符类,或者 JS 特定的 [^]
。出于可移植性的原因,我更喜欢 [\s\S]
。
参见 demo
更好的URL正则表达式,你可以看this SO post或查看 my previous answer与 Diego Perini's URL regex .
关于javascript - 如何找到给定文本中第一个 backbone.js 标记之前的 url。我尝试了所有的可能性,但无法做到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32495985/