日期:2014-05-16  浏览次数:20310 次

哪位大神帮我看看,一个javascript正则表达式分组问题,我已经弄了两天了,谢谢了
要求是这样的
1.中国共产党成立于哪一年?(A)
A.1921年
B.1922年
C.1927年
D.1949年
   
2.中国最后一个朝代是哪个朝代?(B)
A.清朝
B.明朝
C.宋朝

这只是试题的一部分
要求写一个正则表达式把试题分组,也就是获得这些试题
我写了一个正则表达式 只能匹配前面一段
我写的 /(?:((?:\d+\.)?.+\([A-F]\)\n(?:[A-F]\..+\n*)+)\n*)+/
那位大神帮我看些 谢谢啦

------解决方案--------------------
完全用正则取出来,我搞不了。给你写个函数吧
HTML code
<script type="text/javascript">
function getQuestions(){


    var _html=document.getElementById("regtext").value;//得到所有试题
    var re=/([\n\r])+(\d)/g;
    _html =_html.replace(re,'|$2');//每组最后一个选项后的换行替换为|号
    var arr=_html.split('|');//开始分组
    for(i=0;i<arr.length;i++)
    {  
        (function(index){
            var opts='';
            var optsarr=arr[index].split(/\r?\n/);
            for(j=1;j<optsarr.length;j++)
            {
                opts+=opts.length==0?optsarr[j]:','+optsarr[j];//得到选项列表
            }
            var re2=/[A-Z]/g;
            var answer=re2.exec(optsarr[0]);//得到答案
            var name=optsarr[0].match(/(\S+)?/g);//得到带序号的题目名称
            alert("题目:"+name+"\n选项列表:"+opts+"\n答案:"+answer);
        })(i)
       
    }
}
</script>
<textarea id="regtext" cols="50" rows="50">
1.中国共产党成立于哪一年?(A)
A.1921年
B.1922年
C.1927年
D.1949年
2.中国最后一个朝代是哪个朝代?(B)
A.清朝
B.明朝
C.宋朝
D.清朝
E.明朝
F.宋朝
3.中国最后一个xxx朝代是哪个朝代?(B)
A.清朝
B.明朝
C.宋朝
4.中国最后一个ccccc朝代是哪个朝代?(B)
A.清朝
B.明朝
C.宋朝
</textarea>

<input type="button" onclick="getQuestions()" value="获取试题" />

------解决方案--------------------
你写的正则在我这里不行。
我给你写了一个
 function test() {
var reg = /\d+[\..][\s\S]+?\([^\)]+?\)\s+?(?:[A-Z][\..][^\s]+?\s+)+/g;
var content = "你的试题"
alert(content.match(reg)[0]);
}

content.match(reg)[0] 这是第一题及内容,后面的类推。