Я пробовал с этим
var regex = /.*<\s+(.*)\s+>.*/g;
Но это не работает
Пример строки:
your call average is <result.x> OK. <result.y> <result.b>
Я хочу, чтобы все строки между <
и >
использовали regex
Заранее спасибо,
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)
Это должно работать:
/<\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
для соответствия <>
который охватывает несколько строк.
Объяснение:
.*
В начале и в конце вашего регулярного выражения не требуется, потому что вы не пытаетесь сопоставить что-либо за пределами <>
. Вот почему ваше регулярное выражение должно начинаться с <
и заканчивается на >
. После сопоставления некоторых пробелов вы начинаете захватывать вещи внутри <>
с (.*?)
. Обратите внимание, что здесь я использовал ленивый квантификатор. Это значит, что он перестает соответствовать, как только он увидит >
. Для получения дополнительной информации см. Здесь.
используйте ниже 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);
<>
не с <>
Вы можете использовать регулярное выражение, как /\<([^<>]*)\>\/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);
myStr.match(/<(.*?)>/g);