JS正则如何提取多个关键字?

小熊开发 2013-08-17 10:02:44
下面这段JS正则如何编写?

提供字符串:河北省 衡水市 武强县 河北省衡水市武强县北牌村,新河街道2号
提供关键字:北京市、上海市、县、村

要求
1、从字符串中提取存在的关键字
结果:县,村

2、提取关键字+关键字的前面一个字
结果:强县,牌村

3、提取关键字+关键字的前面二个字
结果:武强县,北牌村

4、提取关键字的前面一个字
结果:强,牌

5、提取关键字的前面二个字
结果:武强,北牌

最终用正则提取结果为:县,村,强县,牌村,武强县,北牌村,强,牌,武强,北牌
...全文
492 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2013-08-17
  • 打赏
  • 举报
回复
一个正则要满足这么多的要求是不可能的,你的字符串中的内容本就重复,提取的结果自然重复,可以提取了之后再处理重复的问题
小熊开发 2013-08-17
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:

var ds = "河北省 衡水市 武强县 河北省衡水市武强县北牌村,新河街道2号";
//1、从字符串中提取存在的关键字
alert(ds.match(/[县村]/g));

//2、提取关键字+关键字的前面一个字 
alert(ds.match(/.[县村]/g));

//3、提取关键字+关键字的前面二个字 
alert(ds.match(/..[县村]/g));

//4、提取关键字的前面一个字 
alert(ds.match(/.(?=[县村])/g));

//5、提取关键字的前面二个字 
alert(ds.match(/..(?=[县村])/g));
这几个正则能否合并写成一个正则,另外提取的结果会有重复
天际的海浪 2013-08-17
  • 打赏
  • 举报
回复

var ds = "河北省 衡水市 武强县 河北省衡水市武强县北牌村,新河街道2号";
//1、从字符串中提取存在的关键字
alert(ds.match(/[县村]/g));

//2、提取关键字+关键字的前面一个字 
alert(ds.match(/.[县村]/g));

//3、提取关键字+关键字的前面二个字 
alert(ds.match(/..[县村]/g));

//4、提取关键字的前面一个字 
alert(ds.match(/.(?=[县村])/g));

//5、提取关键字的前面二个字 
alert(ds.match(/..(?=[县村])/g));

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧