खोज…
टिप्पणियों
सब कुछ नहीं है जो एक बैकस्लैश से शुरू होता है, एक भागने का क्रम है। कई चरित्र सिर्फ दृश्यों से बचने के लिए उपयोगी नहीं हैं, और बस एक पूर्ववर्ती बैकस्लैश को नजरअंदाज करने का कारण होगा।
"\H\e\l\l\o" === "Hello" // true
दूसरी ओर, कुछ अक्षर जैसे "यू" और "एक्स" एक वाक्यविन्यास त्रुटि का कारण बनेंगे जब एक बैकस्लैश के बाद अनुचित तरीके से उपयोग किया जाता है। निम्नलिखित एक मान्य स्ट्रिंग शाब्दिक नहीं है क्योंकि इसमें यूनिकोड एस्केप सीक्वेंस प्रीफिक्स \u
जिसके बाद एक वर्ण है जो एक वैध हेक्साडेसिमल अंक नहीं है और न ही एक कर्ल ब्रेस है:
"C:\Windows\System32\updatehandlers.dll" // SyntaxError
एक स्ट्रिंग के अंदर एक पंक्ति के अंत में एक बैकस्लैश एक भागने अनुक्रम का परिचय नहीं देता है, लेकिन लाइन निरंतरता को इंगित करता है, अर्थात
"contin\
uation" === "continuation" // true
अन्य स्वरूपों की समानता
जावास्क्रिप्ट में सीक्वेंस से बचने के दौरान अन्य भाषाओं और स्वरूपों से मेल खाता है, जैसे C ++, Java, JSON, आदि के विवरण में अक्सर महत्वपूर्ण अंतर होगा। जब संदेह हो, तो परीक्षण करना सुनिश्चित करें कि आपका कोड अपेक्षित रूप से व्यवहार करता है, और भाषा विनिर्देश की जांच करने पर विचार करें।
तार और नियमित अभिव्यक्ति में विशेष वर्ण दर्ज करना
अधिकांश प्रिंट करने योग्य वर्णों को स्ट्रिंग या नियमित अभिव्यक्ति शाब्दिक में शामिल किया जा सकता है जैसे वे हैं, जैसे
var str = "ポケモン"; // a valid string
var regExp = /[Α-Ωα-ω]/; // matches any Greek letter without diacritics
गैर-मुद्रण योग्य लोगों सहित एक स्ट्रिंग या नियमित अभिव्यक्ति के लिए मनमाने पात्रों को जोड़ने के लिए, किसी को भागने के दृश्यों का उपयोग करना होगा। एस्केप सीक्वेंस में एक बैकस्लैश ("\") होता है, उसके बाद एक या अधिक अन्य अक्षर होते हैं। किसी विशेष वर्ण के लिए भागने का क्रम लिखने के लिए, आम तौर पर (लेकिन हमेशा नहीं) इसके हेक्साडेसिमल वर्ण कोड को जानने की आवश्यकता होती है।
इस क्रम में उदाहरणों में प्रलेखित, अनुक्रमों से बचने के लिए जावास्क्रिप्ट कई अलग-अलग तरीके प्रदान करता है। उदाहरण के लिए, निम्न एस्केप सीक्वेंस सभी एक ही वर्ण को दर्शाते हैं: लाइन कोड (यूनिक्स न्यूलाइन कैरेक्टर), जिसमें चरित्र कोड U / 000A है।
-
\n
-
\x0a
-
\u000a
- केवल स्ट्रिंग्स में ES6 में
\u{a}
, नया है - सख्त मोड में और टेम्प्लेट स्ट्रिंग में
\012
को स्ट्रिंग शाब्दिक में निषिद्ध -
\cj
रेगुलर एक्सप्रेशन में ही\cj
बच क्रम अनुक्रम
सिंगल कैरेक्टर एस्केप सीक्वेंस
कुछ बच दृश्यों में एक एकल चरित्र के बाद एक बैकस्लैश शामिल है।
उदाहरण के लिए, alert("Hello\nWorld");
, एस्केप सीक्वेंस \n
का उपयोग स्ट्रिंग पैरामीटर में एक नई लाइन को शुरू करने के लिए किया जाता है, ताकि "हैलो" और "वर्ल्ड" शब्द लगातार लाइनों में प्रदर्शित हों।
निकास का क्रम | चरित्र | यूनिकोड |
---|---|---|
\b (केवल स्ट्रिंग में, नियमित अभिव्यक्ति में नहीं) | बैकस्पेस | U + 0008 |
\t | क्षैतिज टैब | U + 0009 |
\n | रेखा भरण | U + 000A |
\v | ऊर्ध्वाधर टैब | U + 000B |
\f | भोजन की शैली | U + 000C |
\r | कैरिज रिटर्न | U + 000D |
इसके अतिरिक्त, अनुक्रम \0
, जब 0 और 7 के बीच एक अंक का पालन नहीं किया जाता है, का उपयोग अशक्त चरित्र (U + 002) से बचने के लिए किया जा सकता है।
दृश्यों \\
, \'
और \"
चरित्र है कि बैकस्लैश इस प्रकार से बचने के लिए किया जाता है। (यानी गैर भागने दृश्यों, जहां प्रमुख बैकस्लैश बस नजरअंदाज कर दिया है के लिए इसी तरह एक ओर जहां \?
के लिए ?
), वे स्पष्ट रूप से एक के रूप में इलाज कर रहे हैं विनिर्देशन के अनुसार स्ट्रिंग्स के अंदर वर्ण भागने के क्रम।
हेक्साडेसिमल सीक्वेंस से बच जाते हैं
0 और 255 के बीच के कोड वाले वर्णों को एक एस्केप सीक्वेंस के साथ दर्शाया जा सकता है, जहां 2-अंकों के हेक्साडेसिमल वर्ण कोड के बाद \x
होता है। उदाहरण के लिए, नॉन-ब्रेकिंग स्पेस कैरेक्टर में बेस 16 में कोड 160 या A0 है, और इसलिए इसे \xa0
रूप में लिखा जा सकता है।
var str = "ONE\xa0LINE"; // ONE and LINE with a non-breaking space between them
9 से ऊपर के हेक्स अंकों के लिए, a
से f
के अक्षरों का उपयोग, लोअरकेस या अपरकेस में बिना किसी भेद के किया जाता है।
var regExp1 = /[\x00-xff]/; // matches any character between U+0000 and U+00FF
var regExp2 = /[\x00-xFF]/; // same as above
4-अंकीय यूनिकोड एस्केप अनुक्रम
0 और 65535 (2 16 - 1) के बीच के कोड वाले वर्णों को एक एस्केप अनुक्रम के साथ दर्शाया जा सकता है, जहां \u
का 4-अंक हेक्साडेसिमल वर्ण कोड होता है।
उदाहरण के लिए, यूनिकोड मानक 8594, या 2192 हेक्साडेसिमल प्रारूप में सही तीर वर्ण ("→") को परिभाषित करता है। तो इसके लिए एक भागने का क्रम \u2192
।
यह स्ट्रिंग "A → B" का उत्पादन करता है:
var str = "A \u2192 B";
9 से ऊपर के हेक्स अंकों के लिए, a
से f
के अक्षरों का उपयोग, लोअरकेस या अपरकेस में बिना किसी भेद के किया जाता है। 4 अंकों से छोटे हेक्साडेसिमल कोड को शून्य अक्षर के साथ छोड़ दिया जाना चाहिए: \u007A
छोटे अक्षर "z" के लिए।
घुंघराले ब्रैकेट यूनिकोड से बच निकलते हैं
ES6 0 से 0x10FFFF तक पूर्ण कोड रेंज में यूनिकोड समर्थन प्रदान करता है। 2 16 - 1 से अधिक कोड वाले पात्रों से बचने के लिए, एस्केप सीक्वेंस के लिए एक नया वाक्यविन्यास पेश किया गया था:
\u{???}
जहां घुंघराले ब्रेसिज़ में कोड कोड बिंदु मान का हेक्साडेसिमल प्रतिनिधित्व है, उदाहरण के लिए
alert("Look! \u{1f440}"); // Look! 👀
ऊपर दिए गए उदाहरण में, कोड 1f440
यूनिकोड कैरेक्टर आइज़ के वर्ण कोड का हेक्साडेसिमल प्रतिनिधित्व है।
ध्यान दें कि घुंघराले ब्रेसिज़ में कोड में हेक्स अंकों की संख्या हो सकती है, जब तक कि मान 0x10FFFF से अधिक न हो। 9 से ऊपर के हेक्स अंकों के लिए, a
से f
के अक्षरों का उपयोग, लोअरकेस या अपरकेस में बिना किसी भेद के किया जाता है।
घुंघराले ब्रेसिज़ के साथ यूनिकोड एस्केप सीक्वेंस केवल स्ट्रिंग्स के अंदर काम करते हैं, न कि नियमित भावों के अंदर!
अष्टोत्तर भाग क्रम
ऑक्टल एस्केप सीक्वेंस को ES5 के रूप में चित्रित किया गया है, लेकिन वे अभी भी नियमित अभिव्यक्ति के अंदर और गैर-सख्त मोड में भी गैर-टेम्पलेट स्ट्रिंग्स के अंदर समर्थित हैं। एक ऑक्टल एस्केप अनुक्रम में 0 और 377 8 = 255 के बीच मूल्य के साथ एक, दो या तीन ऑक्टल अंक होते हैं।
उदाहरण के लिए, कैपिटल लेटर "E" में कैरेक्टर कोड 69 या बेस 8. 105 है। इसलिए इसे एस्केप सीक्वेंस \105
साथ दर्शाया जा सकता है:
/\105scape/.test("Fun with Escape Sequences"); // true
सख्त मोड में, स्ट्रिंग्स के अंदर ऑक्टल एस्केप सीक्वेंस की अनुमति नहीं है और एक सिंटैक्स त्रुटि उत्पन्न करेगा। यह ध्यान देने योग्य है कि \0
, \00
या \000
विपरीत, एक ऑक्टल एस्केप अनुक्रम नहीं माना जाता है, और इस प्रकार सख्त मोड में स्ट्रिंग्स (यहां तक कि टेम्पलेट स्ट्रिंग्स) के अंदर अभी भी अनुमति है।
नियंत्रण से बच दृश्यों
कुछ बच अनुक्रम केवल नियमित अभिव्यक्ति शाब्दिक (तार में नहीं) के अंदर पहचाने जाते हैं। इन्हें 1 और 26 (U + 0001 – U + 001A) कोड के साथ वर्णों से बचने के लिए उपयोग किया जा सकता है। वे एक अक्षर A-Z से मिलकर बने होते हैं (केस को कोई फर्क नहीं पड़ता) \c
पूर्ववर्ती है। वर्ण के \c
अक्षर के बाद अक्षर की स्थिति वर्ण कोड निर्धारित करती है।
उदाहरण के लिए, नियमित अभिव्यक्ति में
`/\cG/`
अक्षर "जी" (वर्णमाला में 7 वां अक्षर) अक्षर U + 0007 को संदर्भित करता है, और इस प्रकार
`/\cG`/.test(String.fromCharCode(7)); // true