正则表达式,用于在“ =”之后选择值

时间:2019-05-30 22:54:53

标签: javascript regex

我如何使用下面的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]+)$

3 个答案:

答案 0 :(得分:1)

您可以使用

/RptNum=([\w-]+)/

模式将匹配RptNum=,然后捕获1次或多次出现的字符字符(字母,数字和_)或连字符。请参见regex demoregex graph

enter image description here

请注意

/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);

Demo

RegEx

如果不需要此表达式,可以在regex101.com中对其进行修改/更改。

RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 2 :(得分:0)

const text = 'RptNum=RQR-1BN6Q360090-0001';

console.log(text.match(/RptNum=.*/).map(m => m.match(/RptNum=.*/)[0])[0].split('RptNum=')[1]);

我想这可行