【发布时间】:2016-12-21 19:43:18
【问题描述】:
我目前正在寻找一种将匹配文本转换为粗体 html 行的方法。我让它部分工作,除了特殊字符给我带来问题,因为我希望保持原始字符串,但不比较原始字符串。
例子:
给定原始字符串:
Taco John's is my favorite place to eat.
并且想要匹配:
is my 'favorite'
要得到想要的结果:
Taco John's <b>is my favorite</b> place to eat.
我目前绕过匹配字符串中多余引号的方法是替换它们
let regex = new RegExp('('+escapeRegexCharacters(matching_text.replace(/[^a-z 0-9]/gi,''))+')',"gi")
let html= full_text.replace(/[^a-z 0-9]/gi,'').replace(regex, "<b>$1</b>")}}></span>
这几乎可行,只是我丢失了所有标点符号:
Taco Johns <b>is my favorite</b> place to eat
有没有什么方法可以使用正则表达式或其他方法在匹配的短语周围添加标签,同时在匹配过程中忽略大小写和特殊字符?
更新 #1:
我好像不太清楚。我需要原始字符串的标点符号保留在最终结果的 html 中。而且我需要匹配的文本逻辑来忽略所有特殊字符和大写。所以is my favoriteis My favorite和is my 'favorite'都应该触发匹配。
【问题讨论】:
-
您提供的正则表达式的重点是删除任何不是“a-z”(空格)或数字的内容。因此只删除你的标点符号:regex101.com/r/M9HrNF/1
-
如果你成功转义正则表达式字符,为什么你需要删除非字母数字+空格?
-
@DoTheDew 对,到目前为止,我正在删除标点符号以获得匹配,但我希望在最终结果中保留标点符号,但具有删除特殊字符的匹配逻辑。
标签: javascript regex