我是正则表达式的新手,在如何编写表达式以在我的网址中的第三个_和第四个_之后提取值时需要一些帮助:
http://www.companyA.com?scid=sm_aw_ban_PQRSTUV_OP12561
我只是想找到" PQRSTUV" (对于每个URL都会有所不同),然后使用单独的正则表达式找到值" OP12561" (每个网址也会有所不同)
答案 0 :(得分:1)
如果您不必使用两个单独的正则表达式。以下应该适合你。
var matches = url.match(/.*_.*_.*_(.*)_(.*)/);
使用matches[1]
和matches[2]
进行访问。
var url='http://www.companyA.com?scid=sm_aw_ban_PQRSTUV_OP12561';
if (url.match(/.*_.*_.*_(.*)_(.*)/)) {
$('#myDiv').append( url.match(/.*_.*_.*_(.*)_(.*)/)[1] + '<br><br>');
$('#myDiv').append( url.match(/.*_.*_.*_(.*)_(.*)/)[2] );
} else {
// Match attempt failed
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="myDiv"></div>
&#13;
答案 1 :(得分:0)
刚刚在javascript控制台中执行此操作,基本上是一个捕获组,查找第二个和第三个之间的所有内容,然后是第三个和第四个之间的另一个:
y = new RegExp("_.*_(.*)_");
//-> /_.*_(.*)_/
x.match(y)
//-> ["_aw_ban_PQRSTUV_", "PQRSTUV"]
y = new RegExp("_.*_.*_(.*)");
//-> /_.*_.*_(.*)/
x.match(y)
//-> ["_aw_ban_PQRSTUV_OP12561", "OP12561"]
答案 2 :(得分:0)
最后一部分(OP12561):
[^_]+$
或&#34;在结尾之前尽可能长的非空字符串,不包含字符_
&#34;
对于倒数第二部分(PQRSTUV):
(?<=_)[^_]+(?=_[^_]+$)
&#34;最长的非空字符串:
_
_
_
,然后是非空字符串,不包含_
,然后是字符串结尾。
&#34;