javascript纯文本url解析

发布于 2024-09-17 22:29:20 字数 474 浏览 9 评论 0原文

我正在尝试搜索以 http 开头的普通旧字符串,但我找到的所有正则表达式似乎都不适用于 javascript,我似乎也无法在 javascript 中找到这样的示例。

这是我尝试从此处此处

var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;

但是当我尝试运行它时,我收到“意外令牌 |”错误。

I'm trying to search plain old strings for urls that begin with http, but all the regex I find doesn't seem to work in javascript nor can I seem to find an example of this in javascript.

This is the one I'm trying to use from here and here:

var test = /\b(?:(?:https?|ftp|file)://www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;

But when I try to run it, I get "Unexpected token |" errors.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

疑心病 2024-09-24 22:29:20

好吧,评论似乎不够,很难找到完整的答案。我重写了整个正确的正则表达式:(经过测试,效果很好)

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;

末尾的 i 表示“忽略大小写”,因此对于此正则表达式来说这是必要的。

Ok, a comment seems to be not enough, hard to find full answer. I rewrite whole proper regexp: (tested, it works good)

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#\/%=~_|$?!:,.]*[A-Z0-9+&@#\/%=~_|$]/i;

The i on the end means 'ignore case', so it is necessary for this regexp.

抽个烟儿 2024-09-24 22:29:20

您使用 / 作为正则表达式分隔符,并且还在正则表达式中(在 www 之前)使用 /,因此正则表达式实际上在第一个 / www 之前终止。将其更改为:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
                                     ^^^^ escape here

You're using / as your regex delimiter, and are also using / within the regex (before www), so the regex actually terminates after the first / before www. Change it to:

var test = /\b(?:(?:https?|ftp|file):\/\/www\.|ftp\.)[-A-Z0-9+&@#/%=~_|$?!:,.]*[A-Z0-9+&@#/%=~_|$]/;
                                     ^^^^ escape here
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文