2011-11-17 34 views

回答

0

我建议你看看来自Mozilla的Javascript Regex reference

+0

这是一个很好的参考,谢谢。 – trunpet

1

?:手段使捕获组一个非捕获组,即不包括其匹配作为备用参考。这通常是为了在使用运算符所需的捕获组时需要提高性能并消除反向引用的干扰。

在您的例子,它被用来允许或|)将字符串^或空白(\s)的开始。由于此代码的作者并不关心它的匹配,所以他们已将其设为非捕获组。

?!是负向前视。只有捕获组不匹配时,正则表达式才会匹配。

在本例中,作者希望确保MyClass之后的字符是而不是的空白字符(\S)。

这段代码的作者有可能使用了单词边界(\b)。

+0

基本上这个RE意味着任何地方匹配* word *“MyClass”,而不是单词的一部分(不匹配“MyClassExt”或“ThisIsMyClass”和例如) –

+0

js正则表达式和其他语言的正则表达式之间的主要区别是什么像perl或php,我没有找到?:并且在www.w3schools.com提供的教程中捕获组件。 – trunpet

+1

@trunpet:你应该避免w3schools作为一种资源。它已经过时了,充满了错误和不好的建议。 – alex

1

正则表达式(?:^|\s)是一个非捕获组,它匹配行首或空白字符。

正则表达式(?!\S)是一个否定性预测声明,它可以在字符串的末尾成功,或者在下一个字符是空白字符时成功。