匹配字符串

时间:2017-12-11 12:10:19

标签: javascript regex

我想要做的是匹配第一次出现的两个或多个字母,例如,我想从下面的字符串中突出显示A和F:

"ASDFASDFASDFASDF"

但只有第一个A而且只有第一个F

我试过了:

/A{1}F{1}/i

但没有快乐......

任何想法都赞赏......

2 个答案:

答案 0 :(得分:0)

这可以为您提供所需的匹配:

/^(a).*?(f)/i
  • ^断言字符串开头的位置
  • 。*?匹配任何字符(行终止符除外)
  • *?量词 - 在零和无限次之间匹配,尽可能少,根据需要扩展(懒惰)

答案 1 :(得分:0)

使用indexOf等更简单的方法。

就像一个想法,你可以使用不同的方法而不是使用正则表达式来找到第一次出现,但是要反转字符串然后使用negative lookahead找到最后一次出现。

然后使用替换为正则表达式来添加像<span>这样的包装器,然后再次反转该字符串。

最后一次出现的示例正则表达式:

(shark|trip)(?!.*\1)

([A|F])(?!.*\1)

&#13;
&#13;
var str1 = "ASDFASDFASDFASDF";
str1 = str1
    .split("").reverse().join("")
    .replace(/([A|F])(?!.*\1)/gim, '>naps/<$1>naps<')
    .split("").reverse().join("");
document.write(str1);

document.write("<br>");

var str2 = "I am on a shark fishing trip, a fishing trip for shark I am on.";
str2 = str2
    .split(" ").reverse().join(" ")
    .replace(/(shark|trip)(?!.*\1)/gim, '<span>$1</span>')
    .split(" ").reverse().join(" ");
document.write(str2);
&#13;
span {
    color: red;
}
&#13;
&#13;
&#13;