我正在寻找一种方法来用其他内容替换所有这些主题标签:
#foo #foo #foo
目前我使用此代码:
msg = msg.replace(new RegExp('(^|\\s)#' + searchString + '(\\s|$)', 'gi'), $1 + 'bar' + $2");
只要相同主题标签只有两次,此解决方案就有效,但一旦达到三个或更多,它就会失败。
据我所知,一个简单的方法是不可能的,因为我需要支持变异元音(unicode),并且我必须立即替换所有出现的情况。
所以我正在寻找一个可以处理两次以上相同主题标签的正则表达式。
最佳答案
您可以使用此正则表达式与前瞻来解决此问题:
msg = msg.replace(new RegExp('#' + searchString + '(?=\\s|$)', 'gi'), '#bar');
RegEx Demo
您的正则表达式在匹配字符串后也会消耗空间,不会为下一次出现的匹配留下任何空间。
更新:如果您确实想在#
之前匹配可选空格,那么您可以使用:
msg = msg.replace(new RegExp('(^|\\s)#' + searchString + '(?=\\s|$)', 'gi'), "$1" + 'bar');
关于javascript - 如何使用正则表达式和变异元音获取字符串的所有匹配项 - 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27843494/