2011-08-16 101 views
8

我一直在尋找PHP preg_replace函數的js等價物,而我到目前爲止發現的僅僅是string.replaceJavaScript的等效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

需要一個'/ g'全球更換 –

+0

,需要被替換'''',而不是''''。 – mellamokb

0

在JavaScript中,你會寫爲:

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

順便說一句,你確定你已經發布正確的PHP代碼?它寧願:

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

在這種情況下,由於您不需要捕獲組的內容,因此它是否是'()*'或'(*)'並不重要,因此根本不需要括號:'result = subject.replace(/ */g,「 - 」);'會完全一樣。 – stema

+0

我想你應該使用'+'而不是'*':你想要匹配一個或多個空格,而不是零個或多個空格。我沒有測試過這個,但否則它可能會產生'-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/