【发布时间】:2010-02-16 23:58:55
【问题描述】:
我需要匹配所有有效的 URL,除了:
http://www.w3.org
http://w3.org/foo
http://www.tempuri.org/foo
通常,除某些域外的所有 URL。
这是我目前所拥有的:
https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?
将匹配足够接近我需要的 URL(但绝不是所有有效的 URL!)(谢谢,http://snipplr.com/view/2371/regex-regular-expression-to-match-a-url/!)
https?://www\.(?!tempuri|w3)\S*
将匹配所有带有www. 的网址,但不在tempuri 或w3 域中。
我真的很想要
https?://([-\w\.]+)(?!tempuri|w3)\S*
工作,但 afaick,它似乎选择了所有 http:// 字符串。
啊,我应该在乔姆斯基层级更高的地方做这件事!
【问题讨论】:
-
哇...即使按照 URL regexen 的标准,这也是来自 snipplr 的一个非常糟糕的标准。它将禁止在
?之前包含各种有效标点符号的大量 URL。事实上,它甚至不会接受这个问题的 URL。无论如何......如果你想要这样做,那么它应该在之前在你do想要匹配的([-\w\.]+)域名位之前进行。 -
好点,在提出“所有有效网址”声明之前,我并没有真正尝试过任何广泛的 snipplr 正则表达式。我将其编辑出来。