又升级了自己写的在线编辑器,给它加了正则表达式查找替换功能

前端之家收集整理的这篇文章主要介绍了又升级了自己写的在线编辑器,给它加了正则表达式查找替换功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当然,这个查找替换功能可以选择不选中正则表达式。

两个关键函数(写了三小时才测试成功),要来得瑟一下!勾选中了“正则?”之后,可以实现跨行搜索内容

function find(isdesc){
  var startPos=Editor.selectionStart,endPos=Editor.selectionEnd;
  var isreg=document.se.isreg.checked;
  var str=document.se.find.value;
  if(str=='')return false;
  var tmpStr=Editor.value,len=str.length,ss=-1;
  if(tmpStr=='')return false;
  //console.log(startPos+','+endPos+','+tmpStr.length);
  if(!isdesc){
  if(startPos==tmpStr.length)startPos=Editor.selectionStart=endPos=Editor.selectionEnd=0;
  if(isreg){
  var reg=new RegExp(str,"im");
  tmpStr=tmpStr.substr(endPos);
  var arr=tmpStr.match(reg);
  if(arr){str=arr[0];len=str.length;ss=tmpStr.indexOf(str)+endPos;}
  }
  else{
  ss=tmpStr.indexOf(str,endPos);
  }
  if(ss>-1){Editor.selectionStart=ss;Editor.selectionEnd=ss+len;}else {alert('已搜到底部');Editor.selectionStart=Editor.selectionEnd=0;}
  }
  else{
  if(endPos==0)startPos=Editor.selectionStart=endPos=Editor.selectionEnd=tmpStr.length;
  if(isreg){
  var reg=new RegExp(str,"img");
  tmpStr=tmpStr.substring(0,startPos);
  var arr=tmpStr.match(reg);
  if(arr){
  str=arr[arr.length-1];
  len=str.length;
  ss=tmpStr.lastIndexOf(str);
  }
  }
  else{
  ss=tmpStr.lastIndexOf(str,startPos-len);
  }
  if(ss>-1){Editor.selectionStart=ss;Editor.selectionEnd=ss+len;}else{alert('已搜到顶部');Editor.selectionStart=Editor.selectionEnd=tmpStr.length;}
  }
}
function replace(isall){
    var str=document.se.find.value,str2=document.se.for.value;
    var isreg=document.se.isreg.checked;
    if(str=='')return false;
    var tmpStr=Editor.value,ss=-1;
    if(tmpStr=='')return false;
    if(isall){
      var pattern=str;
    if(!isreg)pattern=str.replace(/([\/\|\.\\\(\)\*\?\^\$])/g,'\\$1');
        Editor.value=tmpStr.replace(new RegExp(pattern,"igm"),str2);
        // i:不区分大小写,g:全局搜索,m:多行搜索
        Editor.selectionStart=Editor.selectionEnd=0;
        }
    else{
        var startPos=Editor.selectionStart,endPos=Editor.selectionEnd;
        if(isreg){
        var reg=new RegExp(str,"im");
    tmpStr=tmpStr.substr(startPos);
    var arr=tmpStr.match(reg);
    if(arr){str=arr[0];len=str.length;ss=tmpStr.indexOf(str)+startPos;str2=str.replace(reg,str2);}
        }
        else ss=tmpStr.indexOf(str,startPos);
          if(ss>-1){
          tmpStr=Editor.value;
            Editor.value=tmpStr.substring(0,ss)+str2+tmpStr.substr(ss+str.length);
            Editor.selectionStart=ss;Editor.selectionEnd=ss+str2.length;}else {alert('已搜到底部');Editor.selectionStart=Editor.selectionEnd=0;
            }
        }
    }

现在我正在翻译SVG2.0的w3c草案。

猜你在找的正则表达式相关文章