2011-08-16 10 views
8

के लिए जावास्क्रिप्ट समकक्ष मैं PHP preg_replace फ़ंक्शन के लिए जेएस-समकक्ष की तलाश कर रहा हूं और जो मैंने अभी तक पाया है वह string.replace है।PHP preg_replace

हालांकि मुझे यकीन नहीं है कि मेरी नियमित अभिव्यक्ति को जावास्क्रिप्ट में कैसे परिवर्तित किया जाए। यह मेरा PHP कोड है:

preg_replace("/()*/", $str, $str); 

इसलिए उदाहरण के लिए निम्नलिखित:

test test test test 

हो जाता है:

test-test-test-test 

किसी को भी जानता है कि कैसे मैं जावास्क्रिप्ट में ऐसा कर सकते हैं?

उत्तर

16
var text = 'test test test test', 
    fixed; 
fixed = text.replace(/\s+/g, '-'); 
+0

एक आकर्षण की तरह काम करता है, धन्यवाद! – Skyfe

0

जावास्क्रिप्ट replace फ़ंक्शन संदर्भ देखें।

आपके मामले में ऐसा

var result = str.replace(/\s+/g, '-'); 

कुछ है लेकिन वह केवल एक ही जगह बदल देता है। अब उस पर काम कर :)

+1

वैश्विक प्रतिस्थापन –

+0

के लिए एक '/ g' की जरूरत है और साथ प्रतिस्थापित किया जा करने की जरूरत है '' '', 'नहीं' ''। – mellamokb

0

जावास्क्रिप्ट में, आप के रूप में यह लिखा है:

result = subject.replace(/ +/g, "-"); 

वैसे, क्या आप वाकई सही PHP कोड पोस्ट किया है कर रहे हैं? यह बल्कि होगा:

$result = preg_replace('/ +/', '-', $str); 
+0

इस मामले में इससे कोई फर्क नहीं पड़ता कि यह '() *' या '(*)' है क्योंकि आपको कैप्चरिंग समूह की सामग्री की आवश्यकता नहीं है, इसलिए आपको ब्रैकेट की बिल्कुल आवश्यकता नहीं है: 'result = subject.replace (/ */g, "-"); 'वही वही करेगा। – stema

+0

मुझे लगता है कि आपको '*' के बजाय '+' का उपयोग करना चाहिए: आप एक या अधिक रिक्त स्थान से मेल खाना चाहते हैं, शून्य या अधिक नहीं। मैंने इसका परीक्षण नहीं किया है, लेकिन अन्यथा यह '-t-e-s-t-t-e-s-t-t-e-s-t-t-e-s-t-' –

3

javascripts string.replace समारोह भी एक नियमित अभिव्यक्ति लेता है:

"test test test test".replace(/ +/,'-'); 

http://jsfiddle.net/5yn4s/

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