看到有人问,怎么取出多重书名号的问题,就小试了一把,记录下来供自己以后参考
要解析的内容类似这样:
和同比增速有非常详《测试关《这里还有一个书名号1》[GB 2012-02-08]键词》细数据和文字描述。
和同比增速有非常详《测试关《这里还有一个书名号2》[GB 2012-02-08]键词》细数据和文字描述。
和同比增速有非常详《测试关《这里还有一个书名号3》[GB 2012-02-08]键词》细数据和文字描述。
和同比增速有非常详《测试关《这里还有一个书名号4》[GB 2012-02-08]键词》细数据和文字描述。
废话不说直接上代码
//创建正则对象,模式全局匹配,大致意思就是匹配双书名号中间没有书名号的内容
var pat = new RegExp('《([^《|》]*)》','g');
var str ="和同比增速有非常详《测试关《这里还有一个书名号1》[GB 2012-02-08]键词》细数据和文字描述。和同比增速有非常详《测试关《这里还有一个书名号2》[GB 2012-02-08]键词》细数据和文字描述。和同比增速有非常详《测试关《这里还有一个书名号3》[GB 2012-02-08]键词》细数据和文字描述。和同比增速有非常详《测试关《这里还有一个书名号4》[GB 2012-02-08]键词》细数据和文字描述。";
//创建结果集
var results=[];
//循环取出筛选出来的值
do{
//执行正则对象的exec方法,返回数组对象,此数组两个对象,只取内容,不要书名号,如果字符串中没有匹配的值时返回null
var res = pat.exec(str);
if(res){
results.push(res[1]);
}
}while(res);
console.log(results);
总结
正则表达式很强大,但是因为使用的少,只发现其冰山一角,文中提到的函数,请大家自己翻阅下相关文档,写在这里怕大家认为凑字数!嘿嘿