如何用正则匹配名字里有‘马’的国家?

var text = `
    葡萄牙、西班牙、巴西、  日本、乌拉圭、牙买加、匈牙利  、
    瑞典、巴拿马、   马尔代夫、马其顿、马耳他、马达加斯加、
    马来西亚、危地马拉、索马里、罗马尼亚、日本、希腊、埃及
`;

text.match(/[\u4e00-\u9fa5]+马[\u4e00-\u9fa5]+/g);
//["危地马拉", "索马里", "罗马尼亚"]

上段代码匹配到了一部分名字有马的国家,只是这样只能匹配名字 “中间” 有马的国家
●马字开头的 “马来西亚”,匹配不到
●马字结尾的 “巴拿马”,也匹配不到
请问想都匹配到的话,如何写。谢谢老司机帮助
愿每一个老司机都永远年轻,永远热泪盈眶,永远不被扣分

阅读 3.1k
3 个回答

把+换成*
+代表一次或多次
*代表0次或多次


    /[\u4e00-\u9fa5]*马[\u4e00-\u9fa5]*/g
text.match(/[\u4e00-\u9fa5]*马[\u4e00-\u9fa5]*/g);
["巴拿马", "马尔代夫", "马其顿", "马耳他", "马达加斯加", "马来西亚", "危地马拉", "索马里", "罗马尼亚"]
text.match(/(?=[^、\s]*马)[^、]+/g);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题