哪位大神帮我看看,一个javascript正则表达式分组问题,我已经弄了两天了,谢谢了
要求是这样的
1.中国共产党成立于哪一年?(A)
A.1921年
B.1922年
C.1927年
D.1949年
2.中国最后一个朝代是哪个朝代?(B)
A.清朝
B.明朝
C.宋朝
这只是试题的一部分
要求写一个正则表达式把试题分组,也就是获得这些试题
我写了一个正则表达式 只能匹配前面一段
我写的 /(?:((?:\d+\.)?.+\([A-F]\)\n(?:[A-F]\..+\n*)+)\n*)+/
那位大神帮我看些 谢谢啦
[解决办法]
完全用正则取出来,我搞不了。给你写个函数吧
<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] 这是第一题及内容,后面的类推。