繁体   English   中英

使用javascript正则表达式捕获网址中的文本

[英]using javascript regex to capture text in a url

我需要在javascript中使用正则表达式来匹配url中的某些文本。

这是一个例子:

“ qty1 = 0&qty2 = 0&qty3 = 0&”

每当字符串中出现单词“ qty”时,我想匹配在“ =”之后和“&”之前的文本(数字)。 每次生成URL时,文本(数字)都会发生变化,因此我想匹配新的文本(数字)可能是什么。

我可以使用什么正则表达式来解决这个问题?

任何帮助,将不胜感激!

var queryStr = "qty1=0&qty2=0&qty3=0";
var regex = /qty(\d+)=(\d+)/g;
var match = regex.exec(queryStr);
while(match != null){
  var numBeforeEquals = match[1];
  var numAfterEquals = match[2];
  // do your comparison, for example, if it's > 0:
  if(numAfterEquals > 0){
     // do something
  }
  match = regex.exec(queryStr);
}

注意正则表达式末尾的/ g,在某些javascript实现中,如果没有它,最终将导致无限循环。

这是一种替代解决方案(在有效的URL内)。 我将其称为替代方法,因为我两次使用了表达式的各个部分,因此我认为可以对其进行优化。

var breakdown = "http://local/?wtf=omg&qty12=a&qty2=b&qty3=4&test=5".match(/qty[0-9]{0,9999}(.*?)&/ig);
for(var i in breakdown) {
   var v = breakdown[i].match(/qty[0-9]{0,9999}\=(.*?)&/i)[1];
   if(v == 4 || v == "a") {
      alert("Found '"+v+"'!")
   }
}

工作示例: http : //jsfiddle.net/MattLo/FxDyg/

尝试这个

var regex = /qty[\d]+=(\d+)/g,
    text  = "qty1=5&qty2=7&qty3=8&";

while(match = regex.exec(text)) {
    console.log(match[1]);
}

\\d中缺少@ggreiner + ,导致上面的脚本不适用于大于9的数字,例如10、11

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM