PHP preg_replace的JavaScript等价物

PHP preg_replace的JavaScript等价物,php,javascript,regex,preg-replace,Php,Javascript,Regex,Preg Replace,我一直在为PHPpreg\u replace函数寻找一个js等价物,到目前为止,我只找到了string.replace 但是,我不确定如何将正则表达式转换为JavaScript。这是我的PHP代码: preg_replace("/( )*/", $str, $str); 例如: test test test test 变成: test-test-test-test 有人知道我如何在JavaScript中做到这一点吗?请参阅JavaScript函数参考 在你的情况下,是这样的 var

我一直在为PHP
preg\u replace
函数寻找一个js等价物,到目前为止,我只找到了
string.replace

但是,我不确定如何将正则表达式转换为JavaScript。这是我的PHP代码:

preg_replace("/( )*/", $str, $str);
例如:

test   test   test test
变成:

test-test-test-test
有人知道我如何在JavaScript中做到这一点吗?

请参阅JavaScript函数参考

在你的情况下,是这样的

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

但这只取代了一个空间。现在使用它:)

在JavaScript中,您可以将其编写为:

result = subject.replace(/ +/g, "-");
顺便问一下,您确定发布了正确的PHP代码吗?而是:

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

javascripts string.replace函数还采用正则表达式:

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

需要一个
/g
进行全局替换,并且需要用
'-'
替换,而不是
'
。在这种情况下,它是
()*
还是
(*)
,并不重要,因为您不需要捕获组的内容,所以根本不需要括号:
结果=主题。替换(/*/g,“-”
也会这样做。我认为您应该使用
+
而不是
*
:您希望匹配一个或多个空格,而不是零个或多个。我还没有测试过它,但是它可能会生成
-t-e-s-t-t-e-s-t-t-e-s-t-t-e-s-t-
您不需要在正则表达式周围加引号吗?还是我搞糊涂了?不,这是正则表达式。如果我们用引号括起来,JS将把它当作一个常规字符串,这将导致一个空匹配,因为在
文本中没有类似
/\s+/g
的变量。更多信息可以在“谢谢你的参考资料”上找到:)原来我很困惑
"test    test  test    test".replace(/ +/,'-');