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

下面这段JS正则如何编写?

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

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

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

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

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

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

最终用正则提取结果为:县,村,强县,牌村,武强县,北牌村,强,牌,武强,北牌

[code="javascript"]
var str="河北省 衡水市 武强县 河北省衡水市武强县北牌村,新河街道2号"
str=str.substr(str.indexOf("县 ")+4);
//1、从字符串中提取存在的关键字
document.write(str.match(/[县村]/g));
//2、提取关键字+关键字的前面一个字
document.write(str.match(/.[县村]/g));
//3、提取关键字+关键字的前面二个字
document.write(str.match(/..[县村]/g));
//4、提取关键字的前面一个字
document.write(str.match(/.(?=[县村])/g));
//5、提取关键字的前面二个字
document.write(str.match(/..(?=[县村])/g));
[/code]

[\u4e00-\u9fa5]+县[\u4e00-\u9fa5]+村 (1个以上汉字)县(一个以上汉字)村
[\u4e00-\u9fa5]+强县[\u4e00-\u9fa5]+牌村
类似这样就可以正则匹配了。