我有一串可以包含特定标签的文本。
示例:var string = '<pause 4>This is a line of text.</pause><pause 7>This is the next part of the text.</pause>';

我想做的是针对<pause #></pause>标签进行正则表达式匹配。
对于找到的每个标签,在这种情况下为<pause 4></pause><pause 7></pause>。我想要的是获取值47,以及字符串长度除以<pause #>...</pause>标记之间的字符串。

我现在所拥有的并不多。
但是我无法弄清楚如何处理所有情况,然后遍历每个情况并获取我要寻找的值。

我目前的功能看起来像这样,数量不多:

/**
* 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;


}


如果有人能解释我该怎么做,我将非常感激! :)

最佳答案

match(/.../g)不会保存子组,您将需要execreplace来完成。这是一个基于replace的帮助程序函数的示例,用于获取所有匹配项:



function matchAll(re, str) {
  var matches = [];
  str.replace(re, function() {
    matches.push([...arguments]);
  });
  return matches;
}

var string = '<pause 4>This is a line of text.</pause><pause 7>This is the next part of the text.</pause>';

var re = /<pause (\d+)>(.+?)<\/pause>/g;

console.log(matchAll(re, string))





由于仍然要删除标签,因此也可以直接使用replace

关于javascript - Javascript正则表达式匹配并从字符串获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44609258/

10-11 11:12