像这个正则表达式?它匹配什么?问号是什么?:和?!在JavaScript正则表达式?
document.getElementById("MyElement").className =
document.getElementById("MyElement").className.replace
(/(?:^|\s)MyClass(?!\S)/ , '')
像这个正则表达式?它匹配什么?问号是什么?:和?!在JavaScript正则表达式?
document.getElementById("MyElement").className =
document.getElementById("MyElement").className.replace
(/(?:^|\s)MyClass(?!\S)/ , '')
我建议你看看来自Mozilla的Javascript Regex reference。
?:
手段使捕获组一个非捕获组,即不包括其匹配作为备用参考。这通常是为了在使用运算符所需的捕获组时需要提高性能并消除反向引用的干扰。
在您的例子,它被用来允许或(|
)将字符串^
或空白(\s
)的开始。由于此代码的作者并不关心它的匹配,所以他们已将其设为非捕获组。
?!
是负向前视。只有捕获组不匹配时,正则表达式才会匹配。
在本例中,作者希望确保MyClass
之后的字符是而不是的空白字符(\S
)。
这段代码的作者有可能使用了单词边界(\b
)。
正则表达式(?:^|\s)
是一个非捕获组,它匹配行首或空白字符。
正则表达式(?!\S)
是一个否定性预测声明,它可以在字符串的末尾成功,或者在下一个字符是空白字符时成功。
这是一个很好的参考,谢谢。 – trunpet