我刚刚创建了一个字符串,它应该替换以#
开头的单词。我成功地做到了这一点但是只要在字符串中的#之后添加斜杠,它就会替换它。这是我的代码
<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>
我的问题是为什么当我在#之后添加斜杠时它不起作用,我怎么能替换有/的单词。提前致谢
答案 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_]