在弦,我儘量讓space
前(
JavaScript的:。正則表達式來代替富(爲foo(
例如,
foo(
應及時更換,foo (
在JavaScript中,
\S\(/g
我確認這正則表達式匹配FO o(
,但不知道如何使這個更換,以FO o (
我知道這應該由$1
變量來完成,但是你能告訴我這種方式。謝謝。
在弦,我儘量讓space
前(
JavaScript的:。正則表達式來代替富(爲foo(
例如,
foo(
應及時更換,foo (
在JavaScript中,
\S\(/g
我確認這正則表達式匹配FO o(
,但不知道如何使這個更換,以FO o (
我知道這應該由$1
變量來完成,但是你能告訴我這種方式。謝謝。
var s = "foo()";
var withSpaces = s.replace(/(\S)\(/g, '$1 (');
這會碰到麻煩的地方是,如果括號出現在的開始字符串,其中\S
不匹配。在這種情況下,你可以這樣做:
var withSpaces = s.replace(/(\S|^)\(/g, '$1 (');
謝謝你,我回答了你的問題 –
這將做到這一點:
var str = "foo(hello)";
str = str.replace(/(?=\S\()(\S)/g, "$1 ");
工作正則表達式的例子:
JavaScript只支持lookaheads,而不支持lookbeheads。因此,在你的例子中,使用'(?='什麼也不做(JavaScript簡單地將它解釋爲一個普通的組),如果你想要證明,試試你的例子對''()';它不會插入空格如果JS支持lookbehinds) –
@EthanBrown,'(?='是一個lookahead ..!不是lookbehind。我的鏈接是一個正在工作的javascript例子,如果你看這個例子,「javascript」是選定的引擎 – MElliott
不,我的正則表達式也適用於''()'',它放在'('之前的空格處,看看我的例子並測試它,你會看到。 – MElliott
這工作 -
var str = "foo()";
str.replace(/(\S)(\()/, "$1 $2");
//OUTPUT - foo()
否需要額外的分組('$ 2'),因爲你匹配的是文字 –
然後用「(」代替$ 2將是解決方案嗎? – Kamehameha
var string = "foo()";
var foo = string.replace("\(", " (");
console.log(foo);
不,這只是簡單地添加額外的空間,即使它已經存在。 –
var str = 'foo() abc()';
var regex = /(\S)\(/g;
str = str.replace(regex,"$1 (");//foo() abc()
console.log(str);
str = str.replace(regex,"$1 (");//not duplicate space
console.log(str);
split
+ join
替代:
'foo ()'.split(/ *\(/).join(' (')
使用兩個捕獲組分開' \ S'和'\('。 – Gumbo
Thanks.Oh sure,b我忘了這麼做。 –