2011-04-06 11 views
9
में एक भी बहु लाइन स्ट्रिंग में नई-पंक्तियों से पहले रिक्त स्थान अनुगामी

मैं रिक्तियां ("")^ट्रिम जावास्क्रिप्ट

^^quick^^^\n 
^brown^^^\n 
^^fox^^^^^\n 

क्या नियमित अभिव्यक्ति पीछे वाले स्पेस दूर करने के लिए उपयोग करने के लिए के साथ निरूपित, मैं इस एक स्ट्रिंग है कहो यहाँ .replace() के साथ? replace(/\s+$/g, "") का उपयोग करके वास्तव में सहायक नहीं है क्योंकि यह केवल "फॉक्स" के साथ अंतिम पंक्ति पर रिक्त स्थान को हटा देता है।

अन्य प्रश्नों के माध्यम से मुझे पता चला कि replace(/\s+(?:$|\n)/g,"") सही अनुभाग से मेल खाता है लेकिन नए लाइन वर्णों से भी छुटकारा पाता है लेकिन मुझे उनकी आवश्यकता है।

तो सही परिणाम होगा:

^^quick\n 
^brown\n 
^^fox\n 

(केवल पीछे वाले स्पेस निकाल दिए जाते हैं सब कुछ बाकी रहता है)

उत्तर

14

'm' बहु लाइन संशोधक जोड़ें।

replace(/\s+$/gm, "") 

या तेजी से अभी भी ...

replace(/\s\s*$/gm, "") 

क्यों इस तेजी से होता है? देखें: Faster JavaScript Trim

परिशिष्ट: उपर्युक्त अभिव्यक्ति में निकटवर्ती न्यूलाइन को संपीड़ित करने का संभावित अवांछित प्रभाव है।

replace(/[^\S\r\n]+$/gm, "") 

संपादित 2013-11-17: - जोड़ा विकल्प पैटर्न जो लगातार नई-पंक्तियों सेक नहीं करता यदि यह वांछित व्यवहार उसके बाद निम्न पैटर्न पसंद किया जाता है नहीं है। (इस कमी को इंगित करने के लिए डलगार्ड के लिए धन्यवाद।)

+0

एक से अधिक लाइन-ब्रेक को कम करने के अनचाहे साइड-इफेक्ट होने लगता है? – dalgard

+0

@ डलगर्ड - आप सही हैं। उत्तर अब एक वैकल्पिक पैटर्न के साथ अद्यतन किया गया है जिसका प्रतिकूल प्रभाव नहीं है। इस पर ध्यान दिलाने के लिए धन्यवाद! – ridgerunner

+1

अगर मैं 'प्रतिस्थापन (/ [^ \ S \ r \ n] + $/gm, "") में अग्रणी रिक्त स्थान शामिल करना चाहता हूं तो क्या होगा? –

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