我正在寻找一种用其他东西替换所有这些主题标签的方法:
#foo #foo #foo
目前我使用此代码:
msg = msg.replace(new RegExp('(^|\\s)#' + searchString + '(\\s|$)', 'gi'), $1 + 'bar' + $2");
只要相同的#标签只有两次,但只要它变为三个或更多,该解决方案就会起作用,但它会失败。
据我所知,一个简单的approch是不可能的,因为我需要支持Mutted Vowels(unicode),我必须立即替换所有出现的事件。
所以我正在寻找一个正则表达式,它可以处理相同标签的两倍以上。
答案 0 :(得分:3)
你可以使用这个正则表达式来预测这个问题:
msg = msg.replace(new RegExp('#' + searchString + '(?=\\s|$)', 'gi'), '#bar');
你的正则表达式在匹配的字符串后也消耗空间,没有空间可以匹配下次匹配。
更新:如果您真的想在#
之前匹配可选空间,那么您可以使用:
msg = msg.replace(new RegExp('(^|\\s)#' + searchString + '(?=\\s|$)', 'gi'), "$1" + 'bar');