作者:缤纷之铃6868 | 来源:互联网 | 2023-09-15 16:05
我有一个全名字符串。
从字符串到每个单词的第一个字母。我可以仅使用 RegEx
从字符串中获得前两个单词的两个字母吗
仅使用 RegEx
的预期结果是
KC
var str = "Keanu Charles Reeves";
console.log(str);
str = str.match(/\b(\w)/g).join('').substring(0,2);
console.log(str);
您的方法最好,您应该坚持下去。
作为仅用于教育的替代方案,您可以使用基于.replace
方法的解决方案(因为所有匹配方法都需要加入多个要避免的匹配项,原因是您不能在一个匹配操作中将不相交(不相交)的文本匹配成单个组):
s.replace(/[^]*?\b(\w)\w*\W+(\w)[^]*|[^]+/,'$1$2')
它将字符串与直到捕获到第1组的第一个单词char匹配,再匹配至将捕获第一个单词char的第二个单词捕获到第2组,然后将所有字符串匹配到末尾,或者-如果不匹配- [^]+
抓取整个字符串,然后用组1和2的内容替换整个字符串。
请参见regex demo
,
在您写.substring(0,2)
时,只需删除前2个字母就可以了
var str = "Keanu Charles Reeves";
console.log(str);
str = str.match(/\b(\w)/g).join('');
console.log(str);
,
var str = "Keanu Charles Reeves";
str = str.replace(/(\w).*? (\w).*/,"$1$2");
console.log(str);