如何获得前2个单词?

时间:2016-04-07 22:15:48

标签: javascript jquery

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);

3 个答案:

答案 0 :(得分:13)

这是一种方法,但没有正则表达式,它只抓住前两个单词,并且必须在这些单词之间留一个空格。

首先我们拆分成数组,然后我们将该数组从0索引切换为2(不包括)或1,最后我们将它们加入' +':

var x = 'ABC XYZ PQRS';

var y = x.split(' ').slice(0,2).join('+');

// y = "ABC+XYZ"

Working Fiddle

答案 1 :(得分:0)

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



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




答案 2 :(得分:0)

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

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,'+')