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);