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
- 第1组捕获
产生2个匹配结果()(\d+)(猫狗)
- 结果1:
35只狗
- 第1组捕获
35
- 第2组捕获
狗
- 第1组捕获
- 结果2:
16只猫
- 第1组捕获
16
- 第2组捕获猫
- 第1组捕获
- 结果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
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];