如何使用RegEx和Mutted元音获得String的所有匹配 - Hashtags

时间:2015-01-08 15:20:40

标签: javascript regex web unicode

我正在寻找一种用其他东西替换所有这些主题标签的方法:

  

#foo #foo #foo

目前我使用此代码:

msg = msg.replace(new RegExp('(^|\\s)#' + searchString + '(\\s|$)', 'gi'), $1 + 'bar' + $2");

只要相同的#标签只有两次,但只要它变为三个或更多,该解决方案就会起作用,但它会失败。

据我所知,一个简单的approch是不可能的,因为我需要支持Mutted Vowels(unicode),我必须立即替换所有出现的事件。

所以我正在寻找一个正则表达式,它可以处理相同标签的两倍以上。

1 个答案:

答案 0 :(得分:3)

你可以使用这个正则表达式来预测这个问题:

msg = msg.replace(new RegExp('#' + searchString + '(?=\\s|$)', 'gi'), '#bar');

RegEx Demo

你的正则表达式在匹配的字符串后也消耗空间,没有空间可以匹配下次匹配。

更新:如果您真的想在#之前匹配可选空间,那么您可以使用:

msg = msg.replace(new RegExp('(^|\\s)#' + searchString + '(?=\\s|$)', 'gi'), "$1" + 'bar');