我的目标是匹配字符串的第一个单词。所以当你有像“Testing line”这样的字符串时,它会返回“Testing”作为第一个词,我可以用它做任何我想做的事。这是我已经拥有的:
elm.html(elm.text().replace(/([^\s]+)/, '<span class="first-word">$1</span>'));
我有文本为“Demo web”的元素,它返回了“<span class="first-word">Demo</span> web
”。所以这没关系。
但是
我还想要一个异常(exception),当字符串的一部分包含“Admin”时,它将只返回那部分。我想说的...
输入:Adminer helps
-> <span class="first-word">Admin</span>er helps
我试过这个正则表达式:([Admin|^\s]+)
可以正常工作,但仅适用于这种情况。它现在不适用于其他所有不存在“Admin”的地方。示例:
输入:Blabla date
-> Blabla<span class="first-word"> d</span>ate
我做错了什么?如果可能的话,我想只用正则表达式来做。
最佳答案
您可以使用正则表达式 /\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'));
仅供引用: [Admin|^\s]+
是匹配列表中存在的单个字符的“字符类”。在您的情况下,第一个匹配项是 d
,它将替换 d
。此外,^
只有在开头时才有效,否则它将充当 Angular 色。
关于javascript - 在 Javascript 中使用 Regex 匹配精确的字符串或第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35936779/