在Javascript中使用正则表达式查找内部匹配

时间:2013-07-17 21:06:13

标签: javascript regex

如果我有一个字符串"#review?loanId=12-00034&docId=0"并且需要选择loanId("12-00034")字符串,我将如何使用单个正则表达式来执行此操作?

到目前为止,我可以使用/loanId=[\d-]*/来检索"loanId=12-00034",但我如何只获取id?我可以通过嵌套另一个正则表达式得到它,但我想知道这是否只有一个正则表达式。

3 个答案:

答案 0 :(得分:1)

这应该有帮助

var query = "#review?loanId=12-00034&docId=0"

var matches = /\bloanId=([-\d]*)/.exec(query)

console.log(matches[1]);

// => 12-00034

这与其他答案非常相似,主要区别在于我使用\b word boundaries来阻止正则表达式匹配whateverloanId=123&loanId=123-456

第二个区别是我的捕获组是([-d]*)。这意味着如果您的字符串有一个空的loanId,例如?loanId=&something=foo,那么TypeError

就不会获得matches[1]

答案 1 :(得分:0)

您可以使用:

var regex = /loanId=([^&"'\s]+)/;

var match = regex.exec(yourString);

console.log(match[1]);

结果是在第一个捕获组中。由于javascript正则表达式没有lookbehind功能,这是唯一的方法。

答案 2 :(得分:0)

使用capturing group

/loanId=([\d-]+)/

像这样:

var re = /loanId=([\d-]+)/
re.exec("#review?loanId=12-00034&docId=0")
  // ["loanId=12-00034", "12-00034"]
re.exec("no match")
  // null