2011-10-18 8 views
0

JavaScriptで正規表現を定義する際に問題があります。 this format(つまり「dd/mm/yy」)のフォーマット文字列をthis other format(つまり「dd/MM/yyyy」)の文字列に置き換えたいと考えています。私の問題は、javascript正規表現を使用する方法です。たとえば、年を変換する方法は?私はこれらの表現に変換しようとしてきた:javascript regexに関する問題:この数の文字を正確に置き換えてください。

これにより
f1 = "dd/mm/yy"; 
f1 = f1.replace(/[^y](yy)[^y]/g, 'yyyy'); 
f1 = f1.replace(/[^y](y)[^y]/g, 'yy'); 

私は "yyは「YYYY」に任意の「Y」でsorroundedた後、一人で「Y」と同じことをしないで、すべてを変換しようとしましたが、しかし、私はどのように "yyはsorrounded任意のy"と言うか分からない。

答えて

1

yの前に文字をグループ化し、$1を使用してそれを参照してください。 「前の文字」はyを除いて何でもかまいません。 yの前には何も持たないので、|^の前には何も持たないことが許されます。次の文字がy等しくない場合は、「一致を意味(?!y)によって
プレフィックスあなたのパターン、

両方一緒に追加:。。

f1 = "dd/mm/yy"; 
f1 = f1.replace(/([^y]|y)yy(?!y)/g, '$1yyyy'); 
f1 = f1.replace(/([^y]|^)y(?!y)/g, '$1yy'); 
0

正確に2つのyを使用したい場合は、/\by{2}\b/\bは、文字列の先頭、文字列の末尾、および/などを含む単語境界です。

+1

この正規表現が間違っている 'DD/MM/yyo'ありません –

+0

正確には、Rob Wは単語の境界を使って一致しない正規表現を指しています – Ivan

+0

正規表現は何の言及にもマッチしますが、dd/mm/yyoは01/01/111も意味ない。 – Thor84no

関連する問題