我有一串可以包含特定标签的文本。
示例: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>
。我想要的是获取值4
和7
,以及字符串长度除以<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)
不会保存子组,您将需要exec
或replace
来完成。这是一个基于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/