2010-04-04 158 views

回答

17

我不明白爲什麼這個代碼不上吧

foo換成因爲點.明確不匹配換行符。

這會工作:

"foo\r\nbar".replace(/foo[\s\S]+/m, "bar") 

因爲換行符計爲空白(\s)。

請注意,foo附近的括號是多餘的,分組在這裏沒有好處。

+0

謝謝,我不知道。在紅寶石它默認情況下。 – 2010-04-04 20:37:11

+0

不,它不。 ;)(在http://rubular.com/上測試自己) – Tomalak 2010-04-04 20:44:18

+5

'[\ s \ S]'是一個比'(?:。| \ s)更好的解決方法';請參閱Erik Corry對此問題的回答,原因如下:http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8 – 2010-04-04 22:12:00

19

JavaScript不支持點全部修飾符。一個常見的更換:

"foo\r\nbar".replace(/(foo)[\s\S]+/, "bar") 

/m使得^$正確的行爲,但.沒有影響。

+1

太棒了。謝謝 – 2010-04-04 20:37:53