请问如何用JavaScript的正则表达式提取如下格式的数据/* 任意字符
   任意行数
   任意字符 */
typedef 就是c的多行注释格式后面跟一个typedef关键字是在一堆杂乱的代码中提取我写的要么死循环,要么提取过头了,有高人赐教吗

解决方案 »

  1.   

    从代码中提取/* safasfklsdfjlasdfjl */ typedef 为止嘛
      

  2.   

    JavaScript的正则表达式好像没有单行模式
      

  3.   

    var r = 'sadfjaskldfjweofjsladkfjlkxjfowiajflfjlaskdjflakjfoawejflasdjl\
    sadlfjlasdkjflaskdjflksajdflajsdflj\
    asdlkfjlaskdfjlwjlfd\
    asldfjlasdfkj\
    /*sdflksjdf\
    sdlfjlk\
    sdfjlskadfj */\
    typedefasdlfjasldfjasdf\
    asldfjlasdfjlasdf\
    asdflkjasdlf';
    alert(r.match(/\/\*[\s\S]*?\*\/\s+typedef/g));
      

  4.   

    [\s\S]*? 这也行呵呵,多谢哈不过这会把一些多余的代码也匹配进来的,如/* kdjfkf
    d9f79d *//* 我想要的
        xxxx
        我想要的 */
    typedef会把这串全部捕获了,但是我只想捕获下面一部分
      

  5.   

    var r = '/*sdflksjdf\
    sdlfjlk\
    sdfjlskadfj */\
    sadfjaskldfjweofjsladkfjlkxjfowiajflfjlaskdjflakjfoawejflasdjl\
    sadlfjlasdkjflaskdjflksajdflajsdflj\
    asdlkfjlaskdfjlwjlfd\
    asldfjlasdfkj\
    /*sdflksjdf\
    sdlfjlk\
    sdfjlskadfj */\
    typedefasdlfjasldfjasdf\
    asldfjlasdfjlasdf\
    asdflkjasdlf';
    alert(r.match(/\/\*(?:[^*]|\*(?!\/))*\*\/\s+typedef/g));