Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何匹配,但排除正则表达式模式?_Javascript_Regex_Url - Fatal编程技术网

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

Javascript 如何匹配,但排除正则表达式模式?,javascript,regex,url,Javascript,Regex,Url,我有这个网址: 这个正则表达式模式: cID=[^&]* 产生这个结果的原因是: cID=87B6XYZ964D293CF 如何删除“cID=” 谢谢您可以使用lookback(不使用Javascript): 通过使用捕获组: cID=([^&]*) 然后得到1美元: 87B6XYZ964D293CF 下面是Javascript代码: var str = "http://example.com/createSend/step4_1.aspx?cID=876XYZ964

我有这个网址:

这个正则表达式模式:

cID=[^&]*
产生这个结果的原因是:

cID=87B6XYZ964D293CF
如何删除“cID=”


谢谢

您可以使用lookback(不使用Javascript):


通过使用捕获组:

cID=([^&]*)
然后得到1美元:

87B6XYZ964D293CF

下面是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]);

一般来说,要完成这样的任务,您至少有3种选择:

  • 使用lookarounds,这样您就可以精确地匹配您想要捕获的内容
    • 不幸的是,Javascript中没有lookback
  • 使用捕获组捕获特定字符串
    • 几乎所有口味都支持
  • 如果所有其他操作都失败,则始终可以只获取匹配的
    子字符串
    
    • 如果要切掉的前缀/后缀的长度是一个已知的常量,则效果良好
工具书类

例子 给定此测试字符串:

i have 35 dogs, 16 cats and 10 elephants
以下是一些正则表达式模式的匹配:

  • \d+cats
    ->
    16只猫
    ()
  • \d+(?=cats)
    ->
    16
    ()
  • (\d+)猫
    ->
    16只猫
    ()
    • 第1组捕获
      16
您还可以执行多个捕获,例如:

  • (\d+)(猫狗)
    产生2个匹配结果()
    • 结果1:
      35只狗
      • 第1组捕获
        35
      • 第2组捕获
    • 结果2:
      16只猫
      • 第1组捕获
        16
      • 第2组捕获猫

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

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

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

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

什么语言?你在工作吗?你在使用哪个正则表达式解析器?对不起,我应该说得更具体一些。我在JavaScription工作,这太过分了<代码>'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&“.match(/cID=+([^&]*)/)[1]
更简单,因为它不需要非捕获组,并返回与示例相同的结果。
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
'http://example.com/createSend/step4_1.aspx?cID=876XYZ964D293CF&snap=true&jlkj=kjhkjh&'.match(/(?:cID=+)([^&]*)/)[1];