जावास्क्रिप्ट मिलान किए गए समूह के संदर्भ में प्रतिस्थापित करता है?


228

मेरे पास एक स्ट्रिंग है, जैसे कि hello _there_। मैं जावास्क्रिप्ट का उपयोग करके क्रमशः <div>और दो अंडरस्कोर को बदलना चाहता हूं । आउटपुट (इसलिए) जैसा दिखेगा । स्ट्रिंग में कई जोड़े अंडरस्कोर हो सकते हैं।</div>hello <div>there</div>

क्या मैं देख रहा हूँ एक तरह से करने के लिए है या तो हर मैच, जिस तरह से रूबी यह करता है पर एक समारोह चलाएँ:

"hello _there_".gsub(/_.*?_/) { |m| "<div>" + m[1..-2] + "</div>" }

या मिलान किए गए समूह को संदर्भित करने में सक्षम हो, फिर से जिस तरह से इसे रूबी में किया जा सकता है:

"hello _there_".gsub(/_(.*?)_/, "<div>\\1</div>")

कोई विचार या सुझाव?

जवाबों:


384
"hello _there_".replace(/_(.*?)_/, function(a, b){
    return '<div>' + b + '</div>';
})

ओह, या आप भी कर सकते हैं:

"hello _there_".replace(/_(.*?)_/, "<div>$1</div>")

10
के $1बजाय जावास्क्रिप्ट का उपयोग करता है \1? क्या कोई प्रलेखन के लिए एक लिंक प्रदान करेगा?
डेवलेरॉल

3
replacementValueएक फ़ंक्शन हो सकता है और यह कैच ग्रुप्स के आधार पर विभिन्न तर्कों को पारित किया जाता है? गजब का!
डेवलेरॉल

4
मैंने पाया कि 1 ने काम किया, लेकिन $ 1 ने ऐसा नहीं किया, हालाँकि मैं RegExp भिन्नता का उपयोग कर रहा हूँ: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
jsh

1
@CalculatorFeline कह "regex ही" पहचान नहीं है जो एक, के रूप में किसी की जगह के लिए एक regex का उपयोग करने की कोशिश कर रहा हो सकता है। वहाँ कई ऐसा करने की कोशिश कर लोगों को होना चाहिए: "hello _there_".replace(/_(.*?)_/, /<div>\1<\/div>/)
स्टीवर्ट

2
फ़ंक्शन के बारे में दस्तावेज़ीकरण, डेवलपर.
mozilla.org/en-US/docs/Web/JavaScript/Reference/…


7

द्वारा निर्दिष्ट स्ट्रिंग और प्रतिस्थापन पैटर्न के लिए $। यहाँ एक फिर से शुरू:

यहां छवि विवरण दर्ज करें

डॉक्टर से लिंक: यहाँ

"hello _there_".replace(/_(.*?)_/g, "<div>$1</div>")



ध्यान दें:

यदि आप $प्रतिस्थापन स्ट्रिंग का उपयोग करना चाहते हैं $$। Vscode स्निपेट सिस्टम के साथ भी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.