正则表达式新手在这里!假设我有两个文本数组,我正在搜索一个文本。
let text = This is a cool story.
我在文本中寻找这些短语。
ArrBlue = ["cool story"]
ArrGreen = ["This is a cool"]
我想用相应的颜色突出显示数组中的单词。因此,ArrBlue 中的所有单词都会导致文本为蓝色,ArrGreen 为绿色。我像这样创建了两个新的正则表达式..
let regexBlue = new RegExp(arrBlue.join('|'), "ig)
let regexGreen = new RegExp(arrGreen.join('|'), "ig)
然后我使用这些新变量来替换文本,就像这样将跨度标记附加到匹配表达式的开头和结尾。
let newText = text.replace(regexBlue, "<span class='blue'>$&</span>")
.replace(regexGreen, "<span class='green'>$&</span>")
我遇到的问题是我希望我的 html 看起来像这样..
<span class="blue">This is a<span class="green" cool story </span> </span>
但实际上我得到的是
This is a <span class="green">cool story</span>
这是我的快速片段,以更好地了解我的情况。
let greenListArray = ["cool story"];
let blueListArray = ['This is a cool'];
$("#myform").submit(function(event){
event.preventDefault();
$('#results').html('');
let text = $('textarea#textEntered').val();
highlightText(text);
});
function highlightText(text){
let regexGreen = new RegExp(greenListArray.join('[,!?.]?|'), "ig");
let regexBlue = new RegExp(blueListArray.join('[,!?.]?|') + "ig");
let newText = text.replace(regexGreen, "<span class='green'>$&</span>")
.replace(regexBlue, "<span class='blue'>$&</span>");
$('#results').html(newText);
}
.blue{
background-color: red;
font: red;
}
.green{
background-color: green;
}
.greyHighlight:hover{
background-color: grey;
color: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="myform">
<fieldset>
<textarea name='textEntered' id='textEntered' />This is a cool story.</textarea>
<button type='submit' class="bttn">Enter</button>
</fieldset>
</form>
<div class="results-container"> <span class="results-title">Highlighted Text:</span> <div id="results"> </div> <br> </div>
<div class="wantedResults">
Results I wish to have <br>
<span class="blue">This is a</span><span class="green">cool story</span>
</div>