首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JavaScript RegEx忽略字符串

JavaScript RegEx忽略字符串
EN

Stack Overflow用户
提问于 2015-03-15 20:12:49
回答 2查看 1.1K关注 0票数 1

我有从服务器返回的搜索结果和使用搜索查询中的单词突出显示结果的regex。

代码语言:javascript
代码运行次数:0
运行
复制
words = searchQuery.split(' ');

$.each(words, function() { 

  var word = this.trim();
  var regex = new RegExp('(' + word + ')(?!>|b>)', 'gi');

  searchResult = searchResult.replace(regex, "<b>$1</b>");

});

这很好,直到我搜索到这样的东西:

搜索术语:“脚本与javascript”

搜索结果:“java是一种编程语言.”

它应该突出显示整个单词,比如"javascript是一种编程语言.“。但是,由于字符串已从"javascript“更改为"java<b>script</b>",因此它不再匹配搜索查询中的第二个单词。当word的值为"b“、"/”、"<“或">”时,它也会产生奇怪的值。

我的问题是如何忽略regex中的<b></b>标记,而只匹配原始的搜索查询?我试着用放映机,但没成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-15 22:21:08

我认为按字符串长度对数组进行降序排序可以解决这个问题:

代码语言:javascript
代码运行次数:0
运行
复制
words = searchQuery.split(' ');

words.sort(function(a, b){
  return b.length - a.length;
});

$.each(words, function() { 

  var word = this.trim();
  var regex = new RegExp('(' + word + ')(?!>|b>)', 'gi');

  searchResult = searchResult.replace(regex, "<b>$1</b>");

});
票数 1
EN

Stack Overflow用户

发布于 2015-03-16 04:58:30

不能通过regex忽略字符串中的任何内容。试着用"\b“搜索整个单词

代码语言:javascript
代码运行次数:0
运行
复制
var searchQuery = 'script with lang javascript';
var searchResult = 'javascript is a programming language';
words = searchQuery.split(' ');

$.each(words, function() { 

  var word = this.trim();
    var regex = new RegExp('\\b(' + word + ')\\b(?!>|b>)', 'gi');

  searchResult = searchResult.replace(regex, "<b>$1</b>");

});
console.log(searchResult);
代码语言:javascript
代码运行次数:0
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29065656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档