通过Javascript正则表达式选择所有不是特定单词的单词?

时间:2011-12-02 22:38:53

标签: javascript regex

我想选择除“Lorem”之外的所有单词。

我试过了:

^((?!Lorem).*)$ //nothing is selected.
^((?!test).*)$ //entire paragraph is selected.

文字: Lorem ipsum dolor坐下来,精致的adipistur elit。 Lorem ut est quis felis volutpat pretium in et libero。 Curabitur vulputate justo a tellus scelerisque viverra。 Morbi ac leo nec dui feugiat imperdiet。 Nam lacus augue,scelerisque at condimentum et,accumsan non nulla。 Sed m​​i enim,iaculis ut placerat vitae,ullamcorper ac turpis。 Phasellus erat velit,tristique eget cursus non,porttitor in purus。整数pellentesque ultricies felis,非sodales enim bibendum nec。 Nulla gravida ipsum坐amet ipsum porttitor格言。 Fusce mattis ultricies enim ut lORem adipiscing。在发酵告诉坐lorem urna vestibulum fringilla id坐amet odio。 Nunc eget lorem at leo commodo porta feugiat vel quam。 Nam vehicula blandit neque,eget pharetra nulla mattis in.Nullam augue neque,lacinia quis commodo a,lobortis ut tellus。 Curabitur eu tristique risus。 Phasellus iaculis,sem坐在amet aliquam tincidunt,odio ligula posuere mauris,sollicitudin pharetra massa tortor in leo。在interdum facilisis auctor。 Nullam non congue felis。 Vestibulum cursus在luctus libero dapibus吃了一个sapien商品。 Sed pulvinar aliquam nulla,tempor facilisis purus faucibus at。

经过测试: http://regexpal.com/

4 个答案:

答案 0 :(得分:2)

Lorem

之外,
result = subject.match(/\b(?!Lorem\b)\w+\b/g);

不确定这是否是你想要的!

<强>解释

// \b(?!\bLorem\b)\w+\b
// 
//    Assert position at a word boundary «\b»
//    Assert that it is impossible to match the regex below starting at this position (negative lookahead) «(?!\bLorem\b)»
//    Match the characters “Lorem” literally «Lorem»
//    Assert position at a word boundary «\b»
//    Match a single character that is a “word character” (letters, digits, etc.) «\w+»
//    Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
//    Assert position at a word boundary «\b»

答案 1 :(得分:1)

您是说要创建段落的副本,并删除违规词?为此,您将使用:

var filtered = paragraph.replace(/\bLorem\b/g, '');
根据以下评论

更新:哦,所以你想要:

var filtered = paragraph.replace(/\b(?!Lorem\b)(\w+)/g, 'matched word:$1');

答案 2 :(得分:0)

不需要正则表达式:

s.split('Lorem').join('');

当然,对于非区分大小写的版本,您需要一个:

s.split(/Lorem/i).join('');

如果通过“选择”表示你想要一个除了lorem之外的每个单词的数组,请取出上面的输出并在单词边界上分割,比如\ s +或\ b。

答案 3 :(得分:0)

如果你必须使用正则表达式,你可以使用这个:

/(?!lorem)\b\w+/gi