就像这个中的正则表达式一样?它匹配什么?
document.getElementById("MyElement").className =
document.getElementById("MyElement").className.replace
( /(?:^|\s)MyClass(?!\S)/ , '' )
答案 0 :(得分:2)
?:
表示将捕获组设为非捕获组,即不将其匹配作为反向引用。当需要使用捕获组来使用|
运算符时,通常会这样做以提高性能并消除后向引用的混乱。
在您的示例中,它用于允许字符串|
或空格(^
)开头的或(\s
)。由于此代码的作者并不关心它匹配的内容,因此它们使其成为非捕获组。
?!
是负面的预测。只有捕获组不匹配时,正则表达式才会匹配。
在此示例中,作者希望确保MyClass
之后的字符不是空白字符(\S
)。
此代码的作者可能会使用单词边界(\b
)。
答案 1 :(得分:1)
正则表达式(?:^|\s)
是一个非捕获组,它匹配行的开头或空白字符。
正则表达式(?!\S)
是一个负前瞻断言,它在字符串的结尾处成功,或者当下一个字符是空白字符时成功。
答案 2 :(得分:0)
我建议您查看Mozilla的Javascript Regex reference。