我如何使用下面的Regex选择RQR-1BN6Q360090-0001(不带引号)-
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/gaits/CreateReport.aspx?RptNum=RQR-1BN6Q360090-0001">here</a>.</h2>
</body></html>
I tried this but it does not work
RptNum=([A-Za-z]+)$
答案 0 :(得分:1)
您可以使用
/RptNum=([\w-]+)/
模式将匹配RptNum=
,然后捕获1次或多次出现的字符字符(字母,数字和_
)或连字符。请参见regex demo和regex graph:
请注意
/RptNum=([A-Z0-9-]+)/
也可能是限制性更强的模式,也应该起作用。它与_
和小写字母不匹配。
在JS中,将其与String#match()
一起使用,并在匹配时获取第二个数组项:
var s = 'Object moved to <a href="/gaits/CreateReport.aspx?RptNum=RQR-1BN6Q360090-0001">here</a>';
var m = s.match(/RptNum=([\w-]+)/);
if (m) {
console.log(m[1]);
}
答案 1 :(得分:0)
在这里,我们还可以使用收集新行的表达式,例如:
[\s\S]*RptNum=(.+?)"[\s\S]*
[\w\W]*RptNum=(.+?)"[\w\W]*
[\d\D]*RptNum=(.+?)"[\d\D]*
,我们想要的输出保存在(.+?)
中。
const regex = /[\s\S]*RptNum=(.+?)"[\s\S]*/gm;
const str = `<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/gaits/CreateReport.aspx?RptNum=RQR-1BN6Q360090-0001">here</a>.</h2>
</body></html>`;
const subst = `$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log(result);
如果不需要此表达式,可以在regex101.com中对其进行修改/更改。
jex.im可视化正则表达式:
答案 2 :(得分:0)
const text = 'RptNum=RQR-1BN6Q360090-0001';
console.log(text.match(/RptNum=.*/).map(m => m.match(/RptNum=.*/)[0])[0].split('RptNum=')[1]);
我想这可行