RegEx - 不匹配之前的字符

时间:2011-01-17 13:21:35

标签: javascript regex

我理解RegEx的概念,但这或多或少是我第一次尝试自己写一些。

作为项目的一部分,我正在尝试解析与某个域匹配的字符串(实际上是一个域数组,但让我们保持简单)。

起初我开始用这个:

url.match('www.example.com')

但我注意到我也得到了这样的输入:

  

http://www.someothersite.com/page?ref=http://www.example.com

这些行当然会匹配www.example.com,但我希望将它们排除在外。所以我在考虑这些问题:只匹配包含www.example.com的行,但不匹配?个字符后的行。这就是我想出的:

var reg = new RegExp("[^\\?]*" + url + "(\\.*)", "gi"); 

然而,这似乎不起作用,任何建议都会受到高度赞赏,因为我担心我已经使用了我在此事中所拥有的一点点知识。

编辑: 一些澄清。

  • 输入记录GET请求。从这些我想过滤掉几个域。这些将具有/应该处理0-1个任意子域(example.comwww.example.orgwww.somethirdsite.comweb.example.net都应该有效),这些子域将存储在变量中。< / LI>
  • 我特意找到了上面提到的请求,但我也希望能够处理http://www.someothersite.com/page?ref=https://www.example.comhttp://www.someothersite.com/page?ref=www.example.com,即,如果我的针不是请求域的一部分,而是部分请求数据,我不想要匹配。

1 个答案:

答案 0 :(得分:1)

编辑:这是任意域的修改后的正则表达式:

RegExp("(^|\\s)(https?://)?(\\w+\\.)?" + url, "gi");

这里的想法是,你只匹配前面有一些空白字符的网址,这使得它无法进入查询。