2010-04-04 16 views

उत्तर

17

मैं नहीं समझ सकता क्यों इस कोड बार

पर foo को प्रतिस्थापित नहीं करता क्योंकि डॉट . स्पष्ट नहीं मैच न्यू लाइन पात्रों करता है ।

यह काम करेगा:

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

क्योंकि न्यू लाइन वर्ण श्वेत रिक्ति (\s) के रूप में गिनती।

ध्यान दें कि foo के आसपास कोष्ठक अनिवार्य हैं, समूह के पास कोई लाभ नहीं है।

+0

धन्यवाद, मुझे नहीं पता था। रूबी में यह डिफ़ॉल्ट रूप से करता है। –

+0

नहीं, यह नहीं करता है। ;) (Http://rubular.com/ पर अपने लिए परीक्षण करें) – Tomalak

+5

'[\ s \ S]' '(?:। | \ S)' से बेहतर कामकाज है; कारण के लिए इस प्रश्न का एरिक कॉरी का जवाब देखें: http://stackoverflow.com/questions/2407870/javascript-regex-hangs-using-v8 –

19

जावास्क्रिप्ट एक डॉट-सभी संशोधक का समर्थन नहीं करता है। एक आम प्रतिस्थापन है:

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

/m सही ढंग से करता है ^ और $ व्यवहार, लेकिन . पर असर नहीं हुआ है।

+1

ग्रेट। धन्यवाद –

संबंधित मुद्दे