如果我有一个字符串"#review?loanId=12-00034&docId=0"
并且需要选择loanId("12-00034"
)字符串,我将如何使用单个正则表达式来执行此操作?
到目前为止,我可以使用/loanId=[\d-]*/
来检索"loanId=12-00034"
,但我如何只获取id?我可以通过嵌套另一个正则表达式得到它,但我想知道这是否只有一个正则表达式。
答案 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
{ p>
第二个区别是我的捕获组是([-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)
/loanId=([\d-]+)/
像这样:
var re = /loanId=([\d-]+)/
re.exec("#review?loanId=12-00034&docId=0")
// ["loanId=12-00034", "12-00034"]
re.exec("no match")
// null