在Javascript

时间:2016-03-11 09:44:41

标签: javascript regex

我的目标是匹配字符串的第一个单词。因此,当你有像“测试行”这样的字符串时,它将返回“测试”作为第一个单词,我可以随心所欲地做任何事情。这就是我已经拥有的:

elm.html(elm.text().replace(/([^\s]+)/, '<span class="first-word">$1</span>'));

我的元素包含文字“Demo web”,并返回“<span class="first-word">Demo</span> web”。所以这没关系。

BUT

我还想要一个例外,当字符串的一部分包含“Admin”时,它将只返回该部分。我想说的是什么......

输入:Adminer helps - &gt; <span class="first-word">Admin</span>er helps

我试过这个正则表达式:([Admin|^\s]+)哪个正常,但只适用于这种情况。它现在不适用于其他地方,其中“Admin”不存在。例如:

输入:Blabla date - &gt; Blabla<span class="first-word"> d</span>ate

我做错了什么?如果有可能的话,我想用正则表达式来做。

1 个答案:

答案 0 :(得分:4)

您可以使用正则表达式/\bAdmin|\S+/

&#13;
&#13;
function replaceText(str) {
  return str.replace(/\bAdmin|\S+/, '<span class="first-word">$&</span>');
}

console.log(replaceText('Adminer help'));
console.log(replaceText('abc help'));
console.log(replaceText('test help'));
&#13;
&#13;
&#13;

<强> Regex explanation here

Regular expression visualization

仅供参考: [Admin|^\s]+是&#34;字符类&#34;匹配列表中的单个字符。在您的情况下,第一个匹配为d,它将替换d^只有在开头才有效,否则它将作为角色。