我有以下正则表达式:
正则表达式在我们的应用程序中有一些代码,我可以看到它分裂了单词。它显然删除了诸如$#*之类的字符。我需要它完全做同样的事情,但允许一个哈希标记,因为这些单词现在可以有#hashtags。
"Test #words".toLowerCase().split(/\b/).filter(function(w){return w.match(/^\w+$/) }) // returns ["test", "words"]
当前正则表达式删除哈希,我希望它保留。所以我明白了:
["test", "#words"]
答案 0 :(得分:1)
您的"Test #words".toLowerCase().split(/\b/).filter(function(w){return w.match(/^\w+$/) })
执行以下操作:
Test #words
分为[,Test, #,words,]
)^\w+$
正则表达式匹配的部分(从字符串的开头到结尾的1个字符)保留在数组中。您可以使用相同的匹配方法将#
与/(?:\B#)?\w+/g
包括在一起:
console.log("Test #words".toLowerCase().match(/(?:\B#)?\w+/g))
模式匹配:
(?:\B#)?
- 一个可选的#
,前面带有非字边界\w+
- 一个或多个字词字符(来自[a-zA-Z0-9_]
范围)如果上下文不那么重要,请使用更简单的/#?\w+/g
正则表达式,该正则表达式将匹配字符串中任意位置的可选#
,后跟1个字符字符。
答案 1 :(得分:0)
只需在正则表达式的开头添加可选#即可支持#hashtags。
"Test #words".toLowerCase().match(/#?\w+/g);