正则表达式匹配单词,除非他们之前有一个字符

时间:2012-06-22 21:28:32

标签: javascript regex

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

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

问题是它不再匹配句子开头的单词。我如何修改这个正则表达式,以便它不是与空格匹配,而是简单地不匹配它们之前的字母。

谢谢!

2 个答案:

答案 0 :(得分:3)

在开头使用\b表示word boundary \b无效,因为#不是单词启动。

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

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

答案 1 :(得分:0)

没有 lookbehind

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

使用 lookbehind (但 Javascript 中不允许):

 pattern = "(?:^|(?<![a-zA-Z]))#[a-zA-Z]+"