引用" * /"当模式匹配的一部分

时间:2013-01-24 06:53:14

标签: javascript regex comments

有代码

obj.property.style.split( /\s*;\s*/ ).forEach( function(s) {...

问题是模式中的*/用作注释分隔符。

例如

/* comment this out please
obj.property.style.split( /\s*;\s*/ ).forEach( function(s) {..
OOPS - NOT commented out */

regexp中引用此内容的习惯方法是什么?

3 个答案:

答案 0 :(得分:2)

*限定符是{0,} 1 的快捷方式,所以:

/\s*;\s{0,}/

然而,由于这使得它略微不那么平常,我真的认为不要用/* .. */评论来评论代码。


1 {n,} is specified in ECMAScript 5th Edition。但是,MDC only lists {n,m}

答案 1 :(得分:0)

我认为您的代码如下所示:

obj.property.style.split( /\s*;\s*/ ).forEach(function(s) {
  ...very...
  ...long...
  ...implementation...
});

从另一个角度来看,不是阻止对整个块进行注释,为什么不将回调提取为独立函数。这样,您只需要forEach()一行,您可以安全地对其进行评论。

function eachHandler(s) {
  ...very...
  ...long...
  ...implementation...
}

//you just prevented the forEach!
//obj.property.style.split( /\s*;\s*/ ).forEach(eachHandler);

答案 2 :(得分:0)

来自specs

  

要指定空的正则表达式,请使用:/(?:)/

在您的情况下:/\s*;\s*(?:)/

?:可防止parens捕获。如果您不关心捕获,也可以使用/\s*;\s*()/