如果我有一个字符串"#review?loanId=12-00034&docId=0"
并且需要选择 loanId ( "12-00034"
) 字符串,我将如何使用单个正则表达式来执行此操作?
到目前为止,我可以使用它/loanId=[\d-]*/
来检索"loanId=12-00034"
,但我如何仅获取 id 本身?我可以通过嵌套另一个正则表达式来获得它,但我想知道这是否可能只使用一个正则表达式。
如果我有一个字符串"#review?loanId=12-00034&docId=0"
并且需要选择 loanId ( "12-00034"
) 字符串,我将如何使用单个正则表达式来执行此操作?
到目前为止,我可以使用它/loanId=[\d-]*/
来检索"loanId=12-00034"
,但我如何仅获取 id 本身?我可以通过嵌套另一个正则表达式来获得它,但我想知道这是否可能只使用一个正则表达式。
这应该有帮助
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
,您将不会得到一个TypeError
formatches[1]
你可以使用这个:
var regex = /loanId=([^&"'\s]+)/;
var match = regex.exec(yourString);
console.log(match[1]);
结果在第一个捕获组中。由于 javascript 正则表达式没有后向功能,因此这是唯一的方法。
使用捕获组:
/loanId=([\d-]+)/
像这样:
var re = /loanId=([\d-]+)/
re.exec("#review?loanId=12-00034&docId=0")
// ["loanId=12-00034", "12-00034"]
re.exec("no match")
// null