我有这个检测主题标签的正则表达式。它不应该匹配前面有字母的东西,所以我们在正则表达式的开头有一个空格字符:
/( #[a-zA-Z_]+)/gm
问题是它不再匹配句子开头的单词。我怎样才能修改这个正则表达式,而不是匹配空格,它根本不匹配前面有字母的东西。
谢谢!
我有这个检测主题标签的正则表达式。它不应该匹配前面有字母的东西,所以我们在正则表达式的开头有一个空格字符:
/( #[a-zA-Z_]+)/gm
问题是它不再匹配句子开头的单词。我怎样才能修改这个正则表达式,而不是匹配空格,它根本不匹配前面有字母的东西。
谢谢!
在开头使用
\b
以指示单词边界。\b
行不通,因为#
它不是一个单词启动器。
只需检查字符串的开头或之前的空格:(?:^|\s)(\#[a-zA-Z_]+)
另外,请确保您转义了#
,因此它不会被解释为评论。
没有后视:
pattern = /(?:^|[^a-zA-Z])#[a-zA-Z]+/
向后看(但在Javascript中不允许):
pattern = "(?:^|(?<![a-zA-Z]))#[a-zA-Z]+"