javascript - 如何在 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/", "."] 和要分开的期间。您对如何执行此操作有建议吗?
解决方案
试试这个,刚刚在语句的最后添加了另一个模式
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,}[.,]/?)"
)
推荐阅读
- python - 如何将 Pandas DataFrame 的列转换为单独的 dicts,其中 dictnames 是列名?
- firebase - 如何使用 Flutter 和 Firebase 创建条带标准帐户
- conda - tmux create new pane or window with current activated conda environment
- javascript - Object.assign() 用于替换 json 对象
- django - How to obtain cleaned_data from a FormSetView (django-extra-views)
- javascript - Jquery autocomplete using typeahead suggestion does not display after a successful ajax
- arduino - 在arduino中通过串行发送整数
- email - Office 365/Exchange Online Mail rule triggers twice when 2 internal recipients receive mail
- javascript - How I can check if a string is likely to be generated by a bot?
- javascript - Add only changes in content (don't replace all content) to live-preview (with jQuery)