使用Regex从URL中的指定位置拉取值

时间:2014-12-19 22:18:18

标签: javascript regex

我是正则表达式的新手,在如何编写表达式以在我的网址中的第三个_和第四个_之后提取值时需要一些帮助:

http://www.companyA.com?scid=sm_aw_ban_PQRSTUV_OP12561

我只是想找到" PQRSTUV" (对于每个URL都会有所不同),然后使用单独的正则表达式找到值" OP12561" (每个网址也会有所不同)

3 个答案:

答案 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;
&#13;
&#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;