/ [^ \ n \ S] * :(?!:) /和/ [^ \ n \ S] *:/在javascript中有什么不同

时间:2015-01-27 08:31:35

标签: javascript

我正在阅读coffeescript的lex源代码,我在IDENTIFIER下面的正则表达式

IDENTIFIER = /^([$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)([^\n\S]*:(?!:))?/;

不知道为什么(?!:)是必需的,虽然我知道它是一个非捕获负面的前瞻组

1 个答案:

答案 0 :(得分:1)

要求匹配后不要跟第二个:。没有它,匹配可以后面跟着第二个:。因此,在输入foo::的情况下,只有foo匹配;在没有的情况下,给出输入foo::foo:(带冒号)匹配。你可以在regex101上玩它。