Φ20-70mm
Φ16-59
有这么两串字符串,我想这样提取。
Φ20-70mm取arr[0]="Φ",arr[1]="20-70",arr[2]="mm"
Φ16-59取arr[0]="Φ",arr[1]="16-59",也就是说如果没有,数组arr的长度只为2请问如何提取,或者用其它办法,谢谢!!

解决方案 »

  1.   


    s = "Φ20-70mm";
    alert(doit(s));
    s = "Φ16-59";
    alert(doit(s));function doit(s){
      var re = /(Φ)(\d+\-\d+)([a-z]*)/i
      var m = re.exec(s);
      if(m) {
          m.shift();
          if(m[2]=="") m.pop();
      }
      return m;
    }
      

  2.   

    -后面加个?就可以了。
    s = "Φ20-70mm";
    alert(doit(s));
    s = "Φ16-59";
    alert(doit(s));function doit(s){
      var re = /(Φ)(\d+\-?\d+)([a-z]*)/i
      var m = re.exec(s);
      if(m) {
          m.shift();
          if(m[2]=="") m.pop();
      }
      return m;
    }
      

  3.   

    哦,我是这么写的:/(.*?)(\d+.*\d+)(.*)/i
    好像也行。