正则表达式用'?'来检测网址最后的角色

时间:2013-08-22 13:47:49

标签: javascript regex

我找到了很多解决方案,但没有一个对我有用。

我们假设,例如,我想查找以www.开头并以空格或?结尾的网址。在这种情况下,我的意思是它以?结尾,而不是它必然是与CGI相关的URL。

我正在尝试使用正则表达式

var r = /(^|[\s\?])(www\..+?(?=([\s]|\?|($))))/g;

我的示例使用:http://jsfiddle.net/DKNat/2/

如何在正则表达式中使用\?来阻止/之前包含?的网址的结尾?

http://jsfiddle.net/DKNat/11/

我无法在网址末尾使用DOT解决最后一次问题。 任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

在你的小提琴中试试这个:

var r = /(^|\??)(www\.[^\?]+)/g;

我在这里更新了你的小提琴:

http://jsfiddle.net/DKNat/3/

更新

我看到你现在要做的事情。不幸的是,除了/之外,你的字符串基本上是相同的,所以除非你希望你的正则表达式假设斜杠之后的任何地方?表示CGI调用,否则就没有你可以做多少。但你可以试试这个:

var r = /(^|\??)(www\.[^\?]+\/[^\/]+\?[^\?]+|www\.[^\?]+)/g;

更新了小提琴:

http://jsfiddle.net/DKNat/5/

更新2:确定要求后,这是我添加到小提琴10的最终RegExp:

var r = /(^|[\?\s])(www\.[^\? ]+\/[^\/ ]*\?[^\? ]+|www\.[^\? ]+)/g;