正则表达式:仅匹配不以点开头的单词
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 正则表达式没有实现它。
假设我有这个字符串:
key something.key() (.key)(key)
我希望正则表达式只匹配“[”内的单词 "keys"
[key] something.key() (.key)([key])
我目前使用这个正则表达式/(?!\.)key/g
但这只排除了点,即使它以点开头,仍然会选择单词。
使用负字符class匹配不是点:
[^\.]
然后添加^
以匹配不是点或在字符串的开头:
([^\.]|^)
将 ?:
添加到组以使其成为非捕获。
(?:[^\.]|^)
最后添加一个匹配你的词的捕获组:
(?:[^\.]|^)(word)
您可以使用负向后视获得相同的结果:
(?<!\.)word
唉,JavaScript 正则表达式没有实现它。