一.请写一个关于浮点数(能科学计数)的JS正则表达式;
二.写一个通用的正则表达式以满足下列的要求
Line( 6 2 ,  0.4 1 )
Line( 8 2 ,  -0.3  2,  4 1.01 )
Line( 18 20 ,  -0.3  -2,  24   12.1 , 33.1   55  )
其他要求:
(1)Line不分大小写;
(2)以逗号隔开表示每个坐标对.坐标对的个数最少为2;
(3)有空格的地方,空格个数不能限制;

解决方案 »

  1.   

    var re = /[Ll][Ii][Nn][Ee]\([\s\d\.\-\,]*\)/;
      

  2.   

    LS的不符合第二条
    (2)以逗号隔开表示每个坐标对.坐标对的个数最少为2; 
    除此之外,容错能力太差!!!
    我随便调一个数字比如 5.5.5 也返回TRUE
      

  3.   

    var floats = [
    "1e"
    ,"5.5.5"
    ,"abc"
    ,"--1"
    ,"1"
    ,"-1"
    ,"+1"
    ,".02"
    ,"-.02"
    ,"+.02"
    ,"1.0"
    ,"-1.0"
    ,"+1.0"
    ,"1.01"
    ,"-1.01"
    ,"+1.01"
    ,"1.0e1"
    ,"-1.0e1"
    ,"+1.0e1"
    ,"1.0e-10"
    ,"-1.0e-10"
    ,"+1.0e-10"
    ];var re = /^(\+|\-)?\d*(\.\d+)?(e(\+|\-)?\d+)?$/i;for (var i = 0; i < floats.length; i++) {
    document.write(floats[i]);
    document.write("=");
    document.write(re.test(floats[i]));
    document.write("<br/>");
    }var texts = [
    ,"1 2,,,,, 3  "
    ,"1 2  3  "
    ,"-1 , 2 ,3 "
    ,"+1 aa"
    ,"+1 12e2, -1.2"
    ,"+1 12,,1e2, -1.2"
    ,"+1 1 -1e-1 2e2, -1.2"
    ];var re2 = /^\s*((\+|\-)?\d*(\.\d+)?(e(\+|\-)?\d+)?(\s*|\,))+$/i;for (var i = 0; i < texts.length; i++) {
    document.write(texts[i]);
    document.write("=");
    document.write(re2.test(texts[i]));
    document.write("<br/>");
    }
    输出:
    1e=false
    5.5.5=false
    abc=false
    --1=false
    1=true
    -1=true
    +1=true
    .02=true
    -.02=true
    +.02=true
    1.0=true
    -1.0=true
    +1.0=true
    1.01=true
    -1.01=true
    +1.01=true
    1.0e1=true
    -1.0e1=true
    +1.0e1=true
    1.0e-10=true
    -1.0e-10=true
    +1.0e-10=true
    undefined=false
    1 2,,,,, 3 =true
    1 2 3 =true
    -1 , 2 ,3 =true
    +1 aa=false
    +1 12e2, -1.2=true
    +1 12,,1e2, -1.2=true
    +1 1 -1e-1 2e2, -1.2=true
      

  4.   

    var re2 = /\bLine\s*\(\s*((\+|\-)?\d*(\.\d+)?(e(\+|\-)?\d+)?(\s*|\,))+\)/i;
      

  5.   


    var re = /^(\+|\-)?\d+(?:,\d{3})+(?:\.\d+)?$/i;
    alert(re.test('1,111,111.0'))
      

  6.   

    var re = /^(?:\+|\-)?\d+(?:,\d{3})+(?:\.\d+)?$/i;
    alert(re.test('1,111,111.0'))
      

  7.   


    /line\((\s*-?\d+(?:.\d+)?\s+-?\d+(?:.\d+)?\s*(?:,\s*)?){2,}\)/i
      

  8.   


    纠正/line\((\s*-?\d+(?:\.\d+)?\s+-?\d+(?:\.\d+)?\s*(?:,\s*)?){2,}\)/i
      

  9.   

    如果在一个数字之前加了0,仍然返回TRUE!!!