我有以下字符串。
**Template:**
```
**label**: test
**label2**: test
**label3**: test
```
在``````有'标签'里面和正则表达式我想选择那些标签:
[label1, label2, label3]
然后检查另一个相似的字符串,
**Template:**
```
**label**: Something here
**label2**: Something there.
**label3**: Something everywhere.
```
检查上面的字符串是否包含该数组的所有内容。 **并不重要,但检查它是否也有**(但在单独的方法中)
我尝试了什么:
([/\*(*?)\*/])\w+
它选择文本,但也选择文本后面的星号。 *label
,也没有说明我需要选择代码块之间的所有内容。
我该怎么做?
答案 0 :(得分:1)
我在这里使用两个正则表达式。
首先:
/\`{3}([\s\S]*)\`{3}/g
获取代码块,即包含在(```)三个反引号中的内容。
第二
/\*{2}(.*)\*{2}/gm
从代码块中获取标签,即包含在(***)两颗星内的内容。
另请注意,下面的代码段中的代码假定只有一个代码块,可以包含多个标签。如果您正在处理多个代码块,则可以使用while (matchCode ) { ... }
部分处理该方案,然后在每个代码块中搜索标签。
var str = document.getElementById("myDiv").innerText;
// console.log(str);
var labels = [];
// Get the content between the ``` backticks
var regexCode = /\`{3}([\s\S]*)\`{3}/g;
// Note: Generalize this if you expect there to be multiple blocks of code.
var matchCode = regexCode.exec(str);
var codeText= matchCode[1];
console.log("Content inside code block: ", codeText);
// Get the labels.
var regexLabels = /\*{2}(.*)\*{2}/gm;
var matchLabel = regexLabels.exec(codeText);
while(matchLabel) {
labels.push(matchLabel[1]);
matchLabel = regexLabels.exec(codeText);
}
console.log("Labels: ", labels);
<pre id="myDiv">
**Template:**
```
**label**: test
**label2**: test
**label3**: test
```
</pre>