2011-08-16 115 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/