/ / रेगेक्स और जावास्क्रिप्ट के साथ कोष्ठक, कोष्ठक और ब्रेसिज़ को बचाना - जावास्क्रिप्ट, रेगेक्स

भागने कोष्ठक, कोष्ठक और Regex और जावास्क्रिप्ट के साथ ब्रेसिज़-जावास्क्रिप्ट, Regex

मेरे पास इस उदाहरण की तरह HTML है:

<div class="code">
function something(a, b)
{
return 0;
}
</div>

मैं सभी कोष्ठक, कोष्ठक और ब्रेसिज़ को घेरना चाहता हूँ span कक्षा का brackets। ऐशे ही:

<div class="code">
function something<span class="brackets">(a, b<span class="brackets">)</span>
<span class="brackets">{</span>
return 0;
<span class="brackets">}</span>
</div>

मेरा जावास्क्रिप्ट / jQuery अब तक:

$(".code").each(function() {

$(this).html(
$(this).html().replace("???", "<span class="brackets">$1</span>")
);

});

मैं वास्तव में डॉन 't पता है कि क्या जगह में डाल दिया ???। इंटरनेट पर मुझे जो कुछ भी मिल सकता है, वह है कि लोग कोष्ठक के बीच मेल खाना चाहते हैं न कि वास्तविक कोष्ठक।

बस स्पष्ट होने के लिए मैं सभी उदाहरणों को बदलना चाहता हूं (, ), {, }, [ तथा ].

किसी भी सहायता की बेहद सराहना की जाएगी।

उत्तर:

उत्तर № 1 के लिए 1

आप बस उन सभी को एक चरित्र में भर सकते हैंवर्ग (जो कक्षा के अंदर किसी एक वर्ण से मेल खाता है)। वर्ण वर्ग को ही वर्ग कोष्ठक द्वारा निरूपित किया जाता है, इसलिए आपको अंदर वाले से बचना होगा (यह केवल आंशिक रूप से सत्य है, लेकिन यह निश्चित रूप से अच्छा अभ्यास है):

/([(){}[]])/g

बाहरी गोल कोष्ठक वहाँ हैं ताकि कैप्चर किया गया मूल्य वास्तव में समाप्त हो जाए $1g ऐसा इसलिए है ताकि सभी घटनाओं को बदल दिया जाए।

ध्यान दें कि यह एक स्ट्रिंग नहीं है! इससे घेरो मत "। बस इसे पहले तर्क के रूप में आपूर्ति करें replace ज्यों का त्यों:

...html.replace(/([(){}[]])/g, "<span class="brackets">$1</span>")

वैसे, आपको संभवतः सभी पर पुनरावृति करना चाहिएDOM में टेक्स्ट नोड्स और रिप्लेसमेंट केवल उन पर लागू होता है। अन्यथा आप उस टैग में विशेषता मान या टिप्पणी (या बदतर, एम्बेडेड जावास्क्रिप्ट या सीएसएस) जोड़ सकते हैं।