2016-12-09 16 views
0

e.g.のような各略語を置き換えたいと思います。つまり、1文字、1ドット、1文字、1ドットを意味します。先頭と末尾のスペース。 しかし、これは動作しません。簡略略語を置き換える正規表現

str.replace(new RegExp('\s([A-z]\.[A-z]\.)\s', 'g'), 'abbreviation<$1>') 

Lorem e.g. ipsum 

を文字列引数はスラッシュをエスケープしている必要がありますnew Regexp構文で

Lorem abbreviation<e.g.> ipsum 
+1

'[AZ]は'あなたの考えと一致していません。大文字から小文字までのASCII範囲には、文字以外の文字も含まれます。 '[A-Za-z]'、または大文字小文字を無視するオプションを試してください。 –

答えて

2

[A-z]は、あなたが考えているものと一致しません:大文字から小文字へのASCIIの範囲があまりにもいくつかの非文字の文字が含まれています。 [A-Za-z]を試してみてください、または無視ケースオプション:あなたはたくさんのやりたいように

console.log("Lorem e.g. ipsum".replace(/\s([a-z]\.[a-z]\.)\s/gi, ' abbreviation<$1> '))

0

を取得する必要があります。

str.replace(new RegExp('\\s([A-Za-z]\\.[A-Za-z]\\.)\\s', 'g'), ' abbreviation<$1>') 
+0

@mplungjan [A-z]は、連続したASCIIのcharecter範囲を形成するので、[A-Za-z]と同等です。それは私がテストしたときに私のために働いた理由。 zが小文字であることに注意してください。 –

+0

[*なぜこの正規表現はキャレットを使用できますか?](http://stackoverflow.com/a/29771926/3832970) –

+0

@Sagi_Avinash_Varma:ASCIIコード91-96をチェックしてください!この特殊なケースにマッチしても、[A-Za-z]は決して文字にマッチさせるべきではありません。 –

0

はね、私はこのようなオブジェクトの配列を定義したいです。

var str = 'The FBI and NASA work for the US government' 
var abbr = [ 
    { 
     short: 'FBI', 
     long: 'Federal Bureau of Investigation' 
    }, 
    { 
     short: 'NASA', 
     long: 'National Aeronautics and Space Administration' 
    }, 
    { 
     short: 'US', 
     long: 'United States' 
    } 
]; 

そして、それらをループして、次のように置き換える:

その後
for (var a = 0; a < abbr.length; a++) { 
    str = str.replace(abbr[a].short, abbr[a].short + ' (' + abbr[a].long + ')'); 
} 

あなたは​​は、あなたが得ることができる

FBI (Federal Bureau of Investigation) and NASA (National Aeronautics and Space Administration) work for the US (United States) government 
関連する問題