如何获得前两个单词

How to get first 2 words?

本文关键字:两个 单词 何获得      更新时间:2024-02-23

data.title为ABC XYZ PQRS-www.aaa.tld。输出需要像这样ABC+XYZ

我试过这个:

var t = data.title.split(' ').join('+');
t = t.replace(/(([^'s]+'s's*){1})(.*)/,"Unknown");
 $("#log").text(t);

这里有一种方法,但没有正则表达式,它只获取前两个单词,并且这些单词之间必须有空格。

首先,我们将其拆分为和数组,然后将该数组从0索引切片为2(排他)或1,最后用"+"连接它们:

var x = 'ABC XYZ PQRS';
var y = x.split(' ').slice(0,2).join('+');
// y = "ABC+XYZ"

工作Fiddle

尝试将.match()RegExp /(['w+]+)/g一起使用;连接第一个匹配,+字符,第二个匹配

var matches = "ABC XYZ PQRS - www.aaa.tld".match(/(['w+]+)/g);
console.log(matches[0] + "+" + matches[1])

这是我对前n个单词的通用函数。我还没有对它进行过广泛的测试,但它即使在长字符串上也很快,因为它不使用全局正则表达式或拆分每个单词。您可以微调正则表达式以处理标点符号。我正在考虑用连字符作为分隔符,但如果你愿意,你可以把它移到单词部分。

function regFirstWords(s, n) {
    // ?: non-capturing subsequent sp+word.Change {} if you want to require n instead of allowing fewer
    var a = s.match(new RegExp('[''w''.]+' + '(?:[''s-]*[''w''.]+){0,' + (n - 1) + '}')); 
    return  (a === undefined || a === null) ? '' : a[0];
}

满足OP的要求,更换为"+"

regFirstWords('ABC XYZ PQRS - www.aaa.tld',2).replace(/'s/g,'+')