我尝试过
var regex = /.*<\s+(.*)\s+>.*/g;
但不起作用
示例字符串:
your call average is <result.x> OK. <result.y> <result.b>
我希望使用正则表达式在<
和>
之间的所有字符串
预先感谢
答案 0 :(得分: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);
答案 1 :(得分:0)
使用下面的正则表达式提取结果。
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);
答案 2 :(得分:0)
这应该有效:
/<\s*(.*?)\s*>/g
组1是所需的字符串。 Online Demo.
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
选项以匹配跨越多行的<>
。
说明:
不需要正则表达式开头和结尾的.*
,因为您没有尝试匹配<>
之外的任何内容。这就是为什么您的正则表达式应以<
开头并以>
结尾的原因。匹配了一些空格后,您开始使用<>
捕获(.*?)
内部的内容。请注意,我在这里使用了惰性量词。这样一来,一旦看到>
,它就会停止匹配。有关更多信息,请参见here。
答案 3 :(得分: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)