0

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

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

4

3 回答 3

1

这应该有帮助

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

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

console.log(matches[1]);

// => 12-00034

这与其他答案非常相似,这里的主要区别是我使用\b 单词边界来防止正则表达式匹配不正确的 id,例如whateverloanId=123&loanId=123-456

第二个区别是我的捕获组是([-d]*). 这意味着如果您的字符串有一个空的 loanId like ?loanId=&something=foo,您将不会得到一个TypeErrorformatches[1]

于 2013-07-17T21:26:56.807 回答
0

你可以使用这个:

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

var match = regex.exec(yourString);

console.log(match[1]);

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

于 2013-07-17T21:09:07.420 回答
0

使用捕获组

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

像这样:

var re = /loanId=([\d-]+)/
re.exec("#review?loanId=12-00034&docId=0")
  // ["loanId=12-00034", "12-00034"]
re.exec("no match")
  // null
于 2013-07-17T21:09:12.157 回答