【发布时间】:2018-02-15 15:03:08
【问题描述】:
我需要根据一些模式为一些单词着色
例如,我想为所有开始或结束或包含模式*test*的单词着色
- 示例:测试,测试,测试,tesdaf
var row = {
"Abstract": "This reference is to serve test as a useful reference for testing whether the styling of reference works or not. Adtest all occurrences of 'reference' should be given a color of red tests"
};
//here i need a truncation for examaple test*
var wordsToHighlight = 'reference test*';
var result = row["Abstract"];
wordsToHighlight.split(" ").forEach(function (word) {
result = result.replace(new RegExp(word, "g"),'<span style="color: red;">'+word+'</span>');
});
document.querySelector("#result").innerHTML = result;
<div id="result">
<!-- begin snippet: js hide: false console: true babel: false -->
</div>
通常“测试”“Adtest”等单词都会突出显示。
我需要帮助。
寻找您的建议
【问题讨论】:
-
你必须用
new regExp()把它变成一个正则表达式 -
我记得回答过一个类似的问题。检查是否有帮助:stackoverflow.com/a/16239900/1249581.
-
*必须在正则表达式中替换为.*或在test*中,这意味着最后一个t可以重复任意次数。但是,.*不会在词尾停止,因此您可以改用[^\s]* -
我宁愿用
\S*替换它。 -
@VasylGutnyk 单词边界不适用于非拉丁字符(你应该知道;))
标签: javascript regex