2016-11-14 4 views
1

私は最後の 'と'を残して残りのものを削除したいという文章があります。最後のJavaScript以外の特定の単語を削除しますか?

「ライオン、トラ、クマ、ゾウ」:

「ライオン、およびトラとクマ、ゾウ」、と私はにこれを有効にしたいと思います。

私はstr = str.replace(/and([^and]*)$/, '$1');のような正規表現のパターンを使用しようとしましたが、これは明らかに機能しませんでした。ありがとう。

+0

あなたが望む単語に 'split'、最後のものを除くすべてのインスタンスで' join'を空にします。 – Marty

+1

http://stackoverflow.com/questions/9694930/remove-all-occurrences-except-last – Marty

答えて

4

使用this regex

and (?=.*and) 
  • and一致するとスペースが続きます。 2つのスペース
  • (?=.*and)を持つ防ぐために、交換で除去されるので、スペースが一致しているが続くと

このコードを使用した場合、.*andが続く場合にのみマッチします意味し、先読みです:

str = str.replace(/and (?=.*and)/g, ''); 
+0

完璧!私はこの 'str = str.replace(/ \と(?=。* and)/ g、 '');'ありがとうございました。 – sarcastasaur

+0

コードが機能しません。文字列ではなく正規表現リテラルを使用する必要があります。 – 4castle

1

肯定的な先読み(?=...)を使用すると、現在の一致よりも先にandが存在するかどうかを確認できます。また正規表現をgでグローバルにする必要があります。

function removeAllButLastAnd(str) { 
 
    return str.replace(/and\s?(?=.*and)/g, ''); 
 
} 
 

 
console.log(removeAllButLastAnd("Lions, and tigers, and bears, and elephants"));

0
var multipleAnd = "Lions, and tigers, and bears, and elephants"; 
var lastAndIndex = multipleAnd.lastIndexOf(' and'); 
var onlyLastAnd = multipleAnd.substring(0, lastAndIndex).replace(/ and/gi, '')+multipleAnd.substring(lastAndIndex); 
console.log(onlyLastAnd); 
+0

答えを説明してください – Nikhil

関連する問題