我很想找到一个字符串中的专有名词,但如果它们是句子中的第一个单词,或者单词是字符串中的第一个单词,则不感兴趣。所以例如我想匹配Lipsum和Adipiscing而不是“Lorem”,因为它是第一个单词而不是“Consectetur”,因为它是句子中的第一个单词。
Lorem Lipsum DOLOR ament blah blah。 Consectetur Adipiscing elit ament blah我做了类似的事
var txt = $.trim($('#wrapper').text());
var newVal = '';
txt = txt.split(' ');
var rg= new RegExp("^[A-Z][a-z]{2,}");
for(var i=0; i < txt.length; i++) {
if(txt[i].search(rg) === -1) {
newVal += txt[i] + " ";
}
else {
if (i == 0) {
newVal += txt[i] + " ";
}else{
newVal += "<span class='highlight'>"+txt[i]+"</span> ";
}
}
}
$('#wrapper').html(newVal);
这有效并突出了专有名词,但它也突出了句子的第一个单词。在http://jsfiddle.net/ariyo/SU32g/
进行测试任何帮助将不胜感激。
答案 0 :(得分:2)
我会这样做:
var re = /([A-Za-z]\s+)([A-Z][a-z]+(\s+[A-Z][a-z]+)*)/g;
$('#wrapper').html($('#wrapper').html().replace(re, '$1<span class="highlight">$2</span>'));