javascript正则处理嵌套书名号"《xx《xx》xx》"

看到有人问,怎么取出多重书名号的问题,就小试了一把,记录下来供自己以后参考


要解析的内容类似这样:

和同比增速有非常详《测试关《这里还有一个书名号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);

总结

正则表达式很强大,但是因为使用的少,只发现其冰山一角,文中提到的函数,请大家自己翻阅下相关文档,写在这里怕大家认为凑字数!嘿嘿

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容