正则表达式没有替换字符串中的斜杠

时间:2015-02-16 15:18:22

标签: javascript regex

我刚刚创建了一个字符串,它应该替换以#开头的单词。我成功地做到了这一点但是只要在字符串中的#之后添加斜杠,它就会替换它。这是我的代码

 <script>
var messageString = "The folder #/folder_name was removed from the workspace #workspace_name by #user_name"
result = messageString.replace(/#(\w+)/g, function(_, $1) { return " HELLO"; })
alert(result );
</script>

我的问题是为什么当我在#之后添加斜杠时它不起作用,我怎么能替换有/的单词。提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用:

result = messageString.replace(/#(\S+)/g, function(_, $1) { return " HELLO"; })

\w是一个与/不匹配的单词字符,因此你的正则表达式失败了。相比之下,\S将匹配任何非空格字符。

答案 1 :(得分:1)

您需要将斜杠作为要匹配的有效字符的一部分包含在内,一种方法是将[\/]与其余字符一起使用,如下所示:

messageString.replace(/#([\/\w]+)/g,

请注意, \w 表示[a-zA-Z_]

例如,[\/\w]+也相等[\/a-zA-Z_]