我想制作一个不区分大小写的正则表达式(用于JavaScript),以匹配街道名称,即使每个单词都已被缩写。例如:

大学应与大学大街(N University Ave)相匹配

国王大道应与马丁·路德·金大道相匹配

ne 9th应该与NE 9th St和9th St NE都匹配

“替换”正则表达式的加分(JK),该正则表达式用<b>标签包装匹配的文本。

最佳答案

你得到了:

"n univ av"

你要:
"\bn.*\buniv.*\bav.*"

所以你也是:
var regex = new RegExp("n univ av".replace(/(\S+)/g, function(s) { return "\\b" + s + ".*" }).replace(/\s+/g, ''), "gi");

哎呀!

但是我还没有完成,我想要我的奖励积分。因此,我们将模式更改为:
var regex = new RegExp("n univ av".replace(/(\S+)/g, function(s) { return "\\b(" + s + ")(.*)" }).replace(/\s+/g, ''), "gi");

进而:
var matches = regex.exec("N University Ave");

现在我们得到:
  • matchs [0] =>整个表达式(无用)
  • matchs [odd] =>我们的比赛之一
  • 匹配[even] =>其他文本不在原始匹配字符串


  • 因此,我们可以这样写:
    var result = '';
    for (var i=1; i < matches.length; i++)
    {
      if (i % 2 == 1)
        result += '<b>' + matches[i] + '</b>';
      else
        result += matches[i];
    }
    

    关于javascript - 正则表达式以匹配部分单词(JavaScript),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2655117/

    10-11 22:22
    查看更多