使用正则表达式使用JavaScript提取特定字符串

时间:2018-09-21 05:35:59

标签: javascript

我尝试过

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

但不起作用

示例字符串:

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

我希望使用正则表达式在<>之间的所有字符串

预先感谢

4 个答案:

答案 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)