RegEx只匹配给定条件的换行符?

时间:2011-02-07 22:47:07

标签: javascript regex newline

我有以下RegEx:

^(?!#)(?<=.+)$\r

(设置了全局和多行标志)

想要做的事情是在结束不以'#'开头的行时匹配换行符

2 个答案:

答案 0 :(得分:1)

function doSplit(input){
   var newl=String.fromCharCode(13)+String.fromCharCode(10); //make a newline
   var str = sInput.value.split(/\n/);                       //split on newlines
    for (var i=0,iMax=str.length; i<iMax; i++){              //loop through  
         //if it starts # add a newline
        if (str[i][0]=='#') {str[i]+=newl;}                 
    };

   return str.join('');   //join it back up
}

Example here

当然这实际上会在最后添加一个不存在的换行符(如果最后一行以#开头),那么更改循环以避免这种情况... ...

for (var i=0,iMax=str.length-1; i<iMax; i++){              //loop through

答案 1 :(得分:0)

零宽度前瞻断言关注“不开始”,但我认为你混淆了^和$的使用(在多线模式下)

你可能想要像

这样的东西
(^|\n)(?!#)(\n)