Извлечь конкретную строку с помощью JavaScript с помощью регулярных выражений

1

Я пробовал с этим

var regex =  /.*<\s+(.*)\s+>.*/g;

Но это не работает

Пример строки:

your call average is <result.x> OK. <result.y> <result.b>

Я хочу, чтобы все строки между < и > использовали regex

Заранее спасибо,

  • 0
    использовать myStr.match(/<(.*?)>/g);
  • 0
    Нет, это также не работает. Если возможно, вы можете написать полностью как функцию
Показать ещё 1 комментарий
Теги:

4 ответа

0

var d = "your call average is <result.x> OK. <result.y> <result.b>".split('>')
var result = []
d.forEach(function(te) {
  if (!te.trim()) return
  var t = te.split('<').pop()
  if (!t.trim()) return
  result.push(t)
})
console.log(result)
  • 0
    Без Регулярного выражения Вы можете сделать. Если вы используете Регулярное выражение, вам нужно соответствовать много чего-то.
0

Это должно работать:

/<\s*(.*?)\s*>/g

Группа 1 - это строка, которую вы хотите. Демо-версия.

const regex = /<\s*(.*?)\s*>/gm;
const str = 'your call average is <result.x> OK. <result.y> <result.b>';
let m;

while ((m = regex.exec(str)) !== null) {
    
    console.log(m[1])
}

Обратите внимание, что вы можете опционально включить параметр s для соответствия <> который охватывает несколько строк.

Объяснение:

.* В начале и в конце вашего регулярного выражения не требуется, потому что вы не пытаетесь сопоставить что-либо за пределами <>. Вот почему ваше регулярное выражение должно начинаться с < и заканчивается на >. После сопоставления некоторых пробелов вы начинаете захватывать вещи внутри <> с (.*?). Обратите внимание, что здесь я использовал ленивый квантификатор. Это значит, что он перестает соответствовать, как только он увидит >. Для получения дополнительной информации см. Здесь.

0

используйте ниже regex для извлечения результата.

var regex =/<(.*?)>/g;

var myStr = 'your call average is <result.x> OK. <result.y> <result.b>';

var arr = [];
var regex = /<([^>]+)>/g;
var match;

while( match = regex.exec( myStr ) ) {
    arr.push( match[1] );
}


console.log(arr);
  • 0
    ОП хочет строку ч / б <> не с <>
  • 0
    Спасибо, проверьте код снова я обновил для желаемых результатов.
Показать ещё 1 комментарий
0

Вы можете использовать регулярное выражение, как /\<([^<>]*)\>\/g. Вы можете найти объяснение на странице https://regex101.com/r/DOR7C7/1. Он будет соответствовать всем символам, кроме < или > внутри <..> и отображать результаты.

Код JavaScript

let str = 'your call average is <result.x> OK. <result.y> <result.b>';
let re = /\<([^<>]*)\>/g;

let res = re.exec(str);
let results = [];
while(res){
    results.push(res[1]);
    res = re.exec(str);
}
console.log(results);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню