如何使用 RegEx 和变异元音获取字符串的所有匹配项 - Hashtags
How to get all matches for a String with RegEx and Mutated Vowels - Hastags
我正在寻找一种方法来用其他东西替换所有这些主题标签:
#foo #foo #foo
目前我使用这个代码:
msg = msg.replace(new RegExp('(^|\s)#' + searchString + '(\s|$)', 'gi'), + 'bar' + ");
只要相同的主题标签只有两次,此解决方案就有效,但一旦变成三个或更多,它就会失败。
据我所知,一个简单的方法是不可能的,因为我需要支持变异元音 (unicode),而且我必须立即替换所有出现的地方。
所以我正在寻找一个可以处理两倍以上相同主题标签的正则表达式。
您可以将此正则表达式与前瞻一起使用来解决此问题:
msg = msg.replace(new RegExp('#' + searchString + '(?=\s|$)', 'gi'), '#bar');
RegEx Demo
你的正则表达式也在 消耗 space 匹配字符串后没有留下 space 来匹配下一次匹配。
更新: 如果你真的想在 #
之前匹配可选的 space 那么你可以使用:
msg = msg.replace(new RegExp('(^|\s)#' + searchString + '(?=\s|$)', 'gi'), "" + 'bar');
我正在寻找一种方法来用其他东西替换所有这些主题标签:
#foo #foo #foo
目前我使用这个代码:
msg = msg.replace(new RegExp('(^|\s)#' + searchString + '(\s|$)', 'gi'), + 'bar' + ");
只要相同的主题标签只有两次,此解决方案就有效,但一旦变成三个或更多,它就会失败。
据我所知,一个简单的方法是不可能的,因为我需要支持变异元音 (unicode),而且我必须立即替换所有出现的地方。
所以我正在寻找一个可以处理两倍以上相同主题标签的正则表达式。
您可以将此正则表达式与前瞻一起使用来解决此问题:
msg = msg.replace(new RegExp('#' + searchString + '(?=\s|$)', 'gi'), '#bar');
RegEx Demo
你的正则表达式也在 消耗 space 匹配字符串后没有留下 space 来匹配下一次匹配。
更新: 如果你真的想在 #
之前匹配可选的 space 那么你可以使用:
msg = msg.replace(new RegExp('(^|\s)#' + searchString + '(?=\s|$)', 'gi'), "" + 'bar');