2013-04-05 62 views

回答

3
var result = 'moaning|yes you|hello test|mission control|com on'.replace(/\|/g, ';'); 
+0

謝謝,這工作。沒有repu投票。 – 2013-04-05 19:36:34

2

你也可以使用.split().join()

'moaning|yes you|hello test|mission control|com on'.split('|').join(';') 
+1

這可能是一個愚蠢的問題在這方面,但你知道任何「性能問題」之間,這與「替換」正則表達式?我知道這一點,替換將有效地做同樣的事情,我只是想知道。它是「密集的」分裂,然後加入?特別是與使用Regex相比?我敢肯定,無論哪種情況,這並不重要,因爲這是一個小字符串,只執行一次,但我只是想我會問 – Ian 2013-04-05 19:38:52

+0

@Ian:split/join看起來要快一點,至少在Chrome上: http://jsperf.com/split-join-vs-regex2,但不是太多 – Blender 2013-04-05 20:22:21

+0

感謝您提供。我應該自己做到這一點。當然,在Firefox中,我得到了相反的結果:)我想我在想知道你是否知道類似「好的,正則表達式事先被編譯好,因此它可以更快地執行」或類似的東西。我還想知道是否與字符串的大小有關係。出於某種原因,我覺得split/join不如字符串的大小增加。 – Ian 2013-04-05 22:33:46

1

許多字符被保留,因爲在正則表達式的特殊含義,所以要使用其中的一個你需要通過在特殊字符之前放置反斜槓\來「逃避」它。它們是:

( start of a sub-expression 
) end of a sub-expression 
{ start of repetition range 
} end of a repetition range 
[ start of a character set 
] end of a character set 
+ one or more repetitions 
* zero or more repetitions 
^ start of string 
$ end of string 
| "or" connection between alternatives 
\ start of special code or escape 
/ start or end of regexp pattern 

例如定期exprerssion匹配所有打開的括號是/\[/(注意反斜線)。如果你需要尋找一個反斜槓,你必須在它前面加一個反斜槓(所以加倍)。

不幸的是,沒有預定義的Javascript函數來「轉義」所有特殊字符。