这里的正则表达式是什么?它匹配什么?
document.getElementById("MyElement").className =
document.getElementById("MyElement").className.replace
( /(?:^|\s)MyClass(?!\S)/ , '' )
这里的正则表达式是什么?它匹配什么?
document.getElementById("MyElement").className =
document.getElementById("MyElement").className.replace
( /(?:^|\s)MyClass(?!\S)/ , '' )
?:
表示将捕获组转换为非捕获组,即不将其匹配结果作为后向引用。这通常是为了提高性能和简化后向引用,当需要使用 |
运算符时,才会使用捕获组。
在您的示例中,它被用于允许字符串开头 ^
或空格 (\s
) 的 或 (|
)。由于代码作者不关心所匹配的内容,因此他们将其设置为非捕获组。
?!
是负向先行断言。只有当捕获组不匹配时,正则表达式才会匹配。
在此示例中,作者希望确保 MyClass
后面的字符不是空白字符 (\S
)。
代码作者也可以使用单词边界 (\b
) 来实现相同的效果。
正则表达式(?:^|\s)
是一个非捕获组,它匹配行的开头或空格字符。
正则表达式(?!\S)
是一个负向先行断言,它在字符串末尾或下一个字符为空格字符时成功。