Javascript正则表达式匹配并从字符串中获取值

Javascript正则表达式匹配并从字符串中获取值,javascript,regex,Javascript,Regex,我有一个文本字符串,其中可以有特定的标签。 示例:var string='这是一行文本。这是文本的下一部分' 我试图做的是对标记进行正则表达式匹配。 对于找到的每个标记,在本例中是和。我想要的是获取值4和7,以及字符串长度除以…标记之间的字符串 我现在拥有的不多。 但我不知道如何获取所有案例,然后循环遍历每一个案例并获取我正在寻找的值 我的函数现在看起来是这样的,不多: /** * checkTags(string) * Just check for tags, and add them * t

我有一个文本字符串,其中可以有特定的标签。 示例:
var string='这是一行文本。这是文本的下一部分'

我试图做的是对
标记进行正则表达式匹配。 对于找到的每个标记,在本例中是
。我想要的是获取值
4
7
,以及字符串长度除以
标记之间的字符串

我现在拥有的不多。 但我不知道如何获取所有案例,然后循环遍历每一个案例并获取我正在寻找的值

我的函数现在看起来是这样的,不多:

/**
* checkTags(string)
* Just check for tags, and add them
* to the proper arrays for drawing later on
* @return string
*/
function checkTags(string) {

    // Regular expresions we will use
    var regex = {
        pause: /<pause (.*?)>(.*?)<\/pause>/g
    }

    var matchedPauses = string.match(regex.pause);

    // For each match
      // Grab the pause seconds <pause SECONDS>
      // Grab the length of the string divided by 2 "string.length/2" between the <pause></pause> tags
      // Push the values to "pauses" [seconds, string.length/2]

    // Remove the tags from the original string variable

    return string;


}
/**
*检查标签(字符串)
*只需检查标签,然后添加它们
*到适当的阵列,以便以后绘制
*@返回字符串
*/
函数检查标记(字符串){
//我们将使用的常规表达式
var regex={
暂停:/(.*)/g
}
var matchedPauses=string.match(regex.pause);
//每场比赛
//抓住暂停秒
//抓取字符串长度除以标记之间的2“string.length/2”
//将值推到“暂停”[秒,字符串。长度/2]
//从原始字符串变量中删除标记
返回字符串;
}
如果有人能解释我是如何做到这一点的,我将非常感激!)

match(/…/g)
不保存子组,您需要
exec
replace
来执行此操作。下面是一个基于
replace
的助手函数示例,用于获取所有匹配项:

函数匹配全部(re,str){
var匹配=[];
str.replace(re,function(){
匹配。推送([…参数]);
});
返回比赛;
}
var string='这是一行文本。这是文本的下一部分';
var re=/(.+?)/g;

log(matchAll(re,string))
作为一个起点,因为到目前为止您还没有太多,所以可以试试这个

/<pause [0-9]+>.*<\/pause>/g
要清除最后一个标志>

str = str.slice(0, -1);

您需要进行循环以在文本中查找RegExp模式的所有匹配组。 匹配组是包含原始文本、匹配值和匹配文本的数组

var str='这是一行文本。这是文本的下一部分。';
函数检查标记(str){
//我们将使用的常规表达式
var regex={
暂停:/(.*)\/g
}
var匹配=[];
while(matchedPauses=regex.pause.exec(str)){
push([matchedPauses[1],matchedPauses[2].length/2]);
};
返回比赛;
}
日志(checkTags(str))
str = str.slice(0, -1);