在字符串中查找专有名词

时间:2011-11-17 04:35:34

标签: javascript regex

我很想找到一个字符串中的专有名词,但如果它们是句子中的第一个单词,或者单词是字符串中的第一个单词,则不感兴趣。所以例如我想匹配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/

进行测试

任何帮助将不胜感激。

1 个答案:

答案 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>'));

http://jsfiddle.net/aeCrG/3/