正则表达式:仅匹配不以点开头的单词

Regexp: only match word if it doesn't start with a dot

假设我有这个字符串:

key something.key() (.key)(key)

我希望正则表达式只匹配“[”内的单词 "keys"

[key] something.key() (.key)([key])

我目前使用这个正则表达式/(?!\.)key/g

但这只排除了点,即使它以点开头,仍然会选择单词。

使用负字符class匹配不是点:

[^\.]

然后添加^以匹配不是点字符串的开头:

([^\.]|^)

?: 添加到组以使其成为非捕获。

(?:[^\.]|^)

最后添加一个匹配你的词的捕获组:

(?:[^\.]|^)(word)

您可以使用负向后视获得相同的结果:

(?<!\.)word

唉,JavaScript 正则表达式没有实现它。