1

我有这个检测主题标签的正则表达式。它不应该匹配前面有字母的东西,所以我们在正则表达式的开头有一个空格字符:

/( #[a-zA-Z_]+)/gm

问题是它不再匹配句子开头的单词。我怎样才能修改这个正则表达式,而不是匹配空格,它根本不匹配前面有字母的东西。

谢谢!

4

2 回答 2

3

在开头使用\b以指示单词边界 \b行不通,因为#它不是一个单词启动器。

只需检查字符串的开头之前的空格:(?:^|\s)(\#[a-zA-Z_]+)

另外,请确保您转义了#,因此它不会被解释为评论。

于 2012-06-22T21:29:29.577 回答
0

没有后视

 pattern = /(?:^|[^a-zA-Z])#[a-zA-Z]+/​​​​​​​​​​​​​​​​​​

向后看(但在Javascript中不允许):

 pattern = "(?:^|(?<![a-zA-Z]))#[a-zA-Z]+"
于 2012-06-22T21:42:37.720 回答