首页 > 解决方案 > 如何在 url 中不包含结束标点符号(正则表达式)

问题描述

所以我有这个代码:

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.2stuff?这里”是一个不错的网址,但我想要“www.google.com/”。只返回 ["www.google.com/", "."] 和要分开的期间。您对如何执行此操作有建议吗?

标签: javascriptregexurl

解决方案


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

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,}[.,]/?)"
)

推荐阅读