Как я могу выбрать 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]+)$
Он возвращает RptNum=RQR-1BN6Q360090-0001, мне нужно RQR-1BN6Q360090-0001
Нет, s.match(/RptNum=([\w-]+)/)[1]
делает то, что вам нужно
Спасибо, это работает
Здесь мы также можем использовать выражение, которое собирает новые строки, например:
[\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.info(result);
Если это выражение не нужно, его можно модифицировать/изменить в regex101.com.
jex.im визуализирует регулярные выражения:
Вы можете использовать
/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.info(m[1]);
}
const text = 'RptNum=RQR-1BN6Q360090-0001';
console.info(text.match(/RptNum=.*/).map(m => m.match(/RptNum=.*/)[0])[0].split('RptNum=')[1]);
Я полагаю, это работает
Используйте
/RptNum=([\w-]+)/