js中用正则表达式根据某个关键字截取此关键字之后的字符串
来源:互联网 发布:工业设计软件培训 编辑:程序博客网 时间:2024/05/21 12:13
问题描述:一段字符串里面有多个关键字,把此关键字之后的字符串截取出来一起组成一个键值对
我的思路是用什么来截取,JavaScript提供了三种截取字符串中子串的方法:
1.substring(str,end)
str是必须输入,必须是正值;
end是可选的必须是正值;
根据字面意思,str为截取的开始位置,字符串的第一个字符位置为0;end为截取的结束位置.
substring() 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
2.slice(str,end)
slice()方法的用法基本跟substring一致,但slice()的参数允许负值;
3.substr(str,length)
str是必须输入,str允许为负值,用法跟slice()一样;
length是截取字符串的长度;
可能是我不能很好地应用这三种方法,我选择了用正则表达式来做,首先用一个数组来存取所有的关键字,然后用正则表达式截取两个关键字之间的字符串,我的代码是:var reg = /keys[v][\\s|\\S]*keys[v+1]/;
//这个表示以keys[v]开始keys[v+1]结尾的字符串
var arr=mystr.match(reg)[0];
但在这里就出现了两个问题,一是需要使用动态拼接正则表达式,二是取到的字符串不能包含关键字keys[v]和keys[v+1]。下面是改进的代码:
var reg = eval('/'+keys[v]+'[\\s|\\S]*'+'(?='+keys[v+1]+')/'); var arr=mystr.match(reg)[0];
但是这样还是包含了关键字 keys[v],我就用replace()把 keys[v]去掉
obj[keys[v]] =arr.replace(eval('/'+keys[v]+'/'),'');
大部分已经完成了,但是还有最后一个特殊情况,这里是完整代码
var mystr=" ▇ 基本信息 标题 关于印发《开拓海外文化市场行动计划》(2016-2020年)的通知 流程编号 收文(外)【2016】0144号 流水号类别 外部来文 ▇ 文件信息 来文文号 商服贸发[2016]308号 收文日期 2016-09-14"; //属性 var keys=["标题", "流程编号", "流水号类别","来文文号","收文日期"]; function test(keys) { var obj = new Object(); for (var v=0; v< keys.length-1; v++) { var reg = eval('/'+keys[v]+'[\\s|\\S]*'+'(?='+keys[v+1]+')/'); var arr=mystr.match(reg)[0]; obj[keys[v]] =arr.replace(eval('/'+keys[v]+'/'),''); } if(v=keys.length-1){ var reg1 = eval('/'+keys[v]+'[\\s|\\S]*'+'/'); var arr1=mystr.match(reg1)[0]; obj[keys[v]] =arr1.replace(eval('/'+keys[v]+'/'),''); } return obj; } console.log( test(keys));
其实中间遇到了很多小问题,由于自己的js基础太差了,需要慢慢的积累,又学到了新知识好开心,虽然过程痛苦了一点,不过还好完成了任务。结果图:
- js中用正则表达式根据某个关键字截取此关键字之后的字符串
- Java中用正则表达式截取字符串
- js截取两个字符串之间的内容(正则表达式).
- C#截取两个关键字之间的字符串
- 根据给定正则表达式的匹配拆分此字符串 split(regex);
- 正则表达式截取字符串
- 正则表达式截取字符串
- 正则表达式截取字符串
- 正则表达式匹配关键字
- 正则表达式-屏蔽关键字
- 根据关键字搜索某个目录下的文件
- TERADATA按照关键字截取字符串
- 正则表达式屏蔽关键字的方法
- js正则表达式的一些研究,截取两个字符串中间的字符串
- js正则关键字详解
- 排除包含某个字符串的正则表达式
- java里面如何截取两个关键字中间的字符串
- 字符串中用正则表达式邮箱
- 如何在Python的.py文件里输入中文字符
- Redis-内存优化及持久化机制
- 第7周项目6-停车场模拟
- VxWorks开发板驱动程序学习之KEY
- myeclipse找不到java虚拟机
- js中用正则表达式根据某个关键字截取此关键字之后的字符串
- web.xml配置中的<mime-mapping>
- 第39个python程序:字典dict
- Revit+对象高效过滤
- 第五周项目1 建立顺序栈算法库
- 如何识别图像边缘?
- 【第七周项目6-停车场模拟】
- iframe框架下的子父级页面监控页面关闭事件
- 三、Linux帮助文档man命令