JS regexp根据字符集排除匹配

时间:2017-10-24 12:09:35

标签: javascript regex

我需要编写一个基于排除字符匹配单词的JS RegExp:[', ", -, _ ]所以粗体字词只能与我的例子匹配:

米兰一些词,米兰再次。米兰一词 - 再次:米兰,米兰 - 米兰。米兰词米兰就是这个词。米兰 mialn。米兰的米兰,米兰米兰_米兰。

注意:我不想在单词 milan 之前/之后包含空格,圆点,逗号,因此我需要获得与上面加粗的结果相同的结果。

我需要它像以下一样工作: 的 \ bmilan \ B'/强> 但我需要排除一组字符,因此它与 milan-milan milan 等示例完全不匹配。

我试图让它发挥作用:https://regex101.com/r/FGeNlQ/1但它并不完整。在这个例子中,空格,点等等都包含在匹配的单词中,我不希望这样。

很抱歉,如果这可能重复,但我找不到正确答案

修改

代码用法:

window.wrapText = (sentence, word, description) ->
    regex = "(?:[^\"'`_-]|^)\\b(" + word + ")\\b(?![\"'`_-])"
    re = new RegExp(regex, 'gi')
    span = document.createElement('span')
    span.innerHTML = sentence

    Array.from span.childNodes, (node) =>
      if node.nodeType == 3
        node.nodeValue.split(re).forEach (part, i) ->
          add = undefined
          if i % 2
            add = document.createElement('span')
            add.textContent = part
            add.setAttribute('class', 'glossary_text')
          else
            add = document.createTextNode(part)
          span.insertBefore add, node

        span.removeChild node

    span.innerHTML

注意:我可能没有很好地逃脱'正则表达式'变量

0 个答案:

没有答案