2011-08-16 25 views
8

私はPHP preg_replace関数のjs相当を探していましたが、これまで見つかったものは単にstring.replaceです。JavaScriptに相当するPHP preg_replace

しかし、正規表現をJavaScriptに変換する方法がわかりません。これは私のPHPコードです:

preg_replace("/()*/", $str, $str); 

ですから、例えば次のよう

test test test test 

は次のようになります。

test-test-test-test 

誰もが、私はJavaScriptでこれを行うことができます方法を知っていますか?

答えて

16
var text = 'test test test test', 
    fixed; 
fixed = text.replace(/\s+/g, '-'); 
+0

魅力のように動作します、ありがとう! – Skyfe

0

javascript replaceファンクションリファレンスを参照してください。

あなたのケースでは、

var result = str.replace(/\s+/g, '-'); 

のようなものです。しかし、それは一つだけのスペースを置き換えます。今それに取り組ん:)

+1

は、グローバルな交換 –

+0

ための '/ G'を必要として交換する必要があります'' - ''ではなく '' ''である。 – mellamokb

0

をJavaScriptでは、あなたのようにそれを記述します。ところで

result = subject.replace(/ +/g, "-"); 

、あなたは右のPHPコードを掲載しましたよろしいですか?それはむしろ、次のようになります。

$result = preg_replace('/ +/', '-', $str); 
+0

この場合、キャプチャグループの内容は必要ないので、 '()*'や '(*)'のどちらでもかまいませんので、大括弧は必要ありません: 'result = subject.replace(/ */g、 " - "); 'はまったく同じことを行います。 – stema

+0

私はあなたが '*'の代わりに '+'を使うべきだと思っています:ゼロ以上ではなく、1つ以上のスペースにマッチさせたいと思います。私はこれをテストしていませんが、そうでなければ '-t-e-s-t-t-e-s-t-t-e-s-t-t-e-s-t-' –

3

のJavaScriptのstring.replace機能も正規表現をとります。

"test test test test".replace(/ +/,'-'); 

http://jsfiddle.net/5yn4s/