让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 :(得分:13)
这是一种方法,但没有正则表达式,它只抓住前两个单词,并且必须在这些单词之间留一个空格。
首先我们拆分成数组,然后我们将该数组从0索引切换为2(不包括)或1,最后我们将它们加入' +':
var x = 'ABC XYZ PQRS';
var y = x.split(' ').slice(0,2).join('+');
// y = "ABC+XYZ"
答案 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,'+')