我的目标是匹配字符串的第一个单词。因此,当你有像“测试行”这样的字符串时,它将返回“测试”作为第一个单词,我可以随心所欲地做任何事情。这就是我已经拥有的:
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
我做错了什么?如果有可能的话,我想用正则表达式来做。
答案 0 :(得分:4)
您可以使用正则表达式/\bAdmin|\S+/
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;
<强> Regex explanation here 强>
仅供参考: [Admin|^\s]+
是&#34;字符类&#34;匹配列表中的单个字符。在您的情况下,第一个匹配为d
,它将替换d
。 ^
只有在开头才有效,否则它将作为角色。