我如何匹配,但排除正则表达式模式?

时间:2010-06-09 05:38:06

标签: javascript regex url

我有这个网址:

http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&

这个正则表达式模式:

cID=[^&]*

产生这个结果:

cID=87B6XYZ964D293CF

如何删除“cID =”?

由于

6 个答案:

答案 0 :(得分:23)

你可以使用lookbehind(不是在Javascript中):

(?<=cID=)[^&]*

或者你可以使用分组并抓住第一组:

cID=([^&]*)

答案 1 :(得分:12)

一般来说,要完成这样的事情,你至少有3个选择:

  • 使用外观,因此您可以精确匹配要捕获的内容
    • 不幸的是,Javascript中没有任何后盾,
  • 使用捕获组捕获特定字符串
    • 近乎普遍支持各种口味
  • 如果其他所有方法都失败了,您可以随时取一个substring的匹配项
    • 如果要打印的前缀/后缀的长度是已知常量
    • ,则效果很好

参考


实施例

鉴于此测试字符串:

i have 35 dogs, 16 cats and 10 elephants

这些是一些正则表达式模式的匹配:

您还可以执行多次捕获,例如:

  • (\d+) (cats|dogs)会产生2个匹配结果(see on rubular.com
    • 结果1:35 dogs
      • 第1组捕获35
      • 第2组捕获dogs
    • 结果2:16 cats
      • 第1组捕获16
      • 第2组捕获cats

答案 2 :(得分:4)

使用捕获组:

cID=([^&]*)

然后获得$ 1:

87B6XYZ964D293CF

答案 3 :(得分:4)

使用JavaScript,您需要在正则表达式中使用capture group(将要捕获的部分放在()内)

var url = 'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&';

var match = url.match(/cID=([^&]*)/);
// ["cID=876XYZ964D293CF", "876XYZ964D293CF"]

// match[0] is the whole pattern
// match[1] is the first capture group - ([^&]*)
// match will be 'false' if the match failed entirely

答案 4 :(得分:1)

这是Javascript代码:

 var str = "http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&";
    var myReg = new RegExp("cID=([^&]*)", "i");
    var myMatch = myReg.exec(str);
    alert(myMatch[1]);

答案 5 :(得分:0)

javascript中有一种特殊语法,允许您从结果中排除不需要的匹配。语法是“?:” 在您的情况下,解决方案将是以下

'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&'.match(/(?:cID=+)([^&]*)/)[1];