2

我如何在下面使用正则表达式选择 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]+)$
4

3 回答 3

1

您可以使用

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

该模式将匹配RptNum=然后捕获 1 次或多次出现的单词字符(字母、数字和_)或连字符。请参阅正则表达式演示正则表达式图

在此处输入图像描述

注意

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

于 2019-05-30T23:03:57.453 回答
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可视化正则表达式:

在此处输入图像描述

于 2019-05-30T23:03:48.427 回答
0

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

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

我想这行得通

于 2019-05-30T23:39:35.970 回答