【问题标题】:How to not include ending punctuation in url (regex)如何在 url 中不包含结束标点符号(正则表达式)
【发布时间】:2018-07-02 17:43:07
【问题描述】:

所以我有这个代码:

const urlPattern = new RegExp(
  "(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}/?|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}/?)"
)

我注意到,如果我以标点符号结束地址,那么该标记将包含在地址中。有什么办法可以排除吗? “你好,这是一个字符串 google.com,更多的东西是 www.address.co。”我希望这个给 ["Hello this is a string", "google.com", ", more stuff ", "www.address.co", "."]

现在,我想假设我们没有提交带有标点符号的 URL,但如果 URL 后面跟着另一个非标点符号非空格字符,例如“www.google.com/blah”,则可以使用带有标点符号的 URL .2stuff?here”是一个不错的网址,但我想要“www.google.com/”。只返回 ["www.google.com/", "."] 和要分开的时间段。您对如何执行此操作有建议吗?

【问题讨论】:

  • 在您的捕获组之外,将其添加到另一个捕获组[",'.]?

标签: javascript regex url


【解决方案1】:

试试这个,刚刚在语句的最后添加了另一个模式

const urlPattern = new RegExp(
  "(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}[.,]/?|www\\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\\.[^\\s]{2,}[.,]/?)"
)

【讨论】:

  • 这仅适用于系列中的最后一个 url。它不适用于“您好,这是一个字符串 google.com, 更多内容 www.address.co。”
猜你喜欢
  • 2011-09-23
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
相关资源
最近更新 更多