/ / जावास्क्रिप्ट regex झूठे [डुप्लिकेट] को वापस रखता है - जावास्क्रिप्ट, regex, node.js

जावास्क्रिप्ट regex झूठी लौटता रहता है [डुप्लिकेट] - जावास्क्रिप्ट, regex, node.js

मुझे जावास्क्रिप्ट में regex की समस्या है। मुझे एक स्ट्रिंग से एक आईपी पता प्राप्त करने की आवश्यकता है। मैंने regex101.com के साथ अपने रेगेक्स का परीक्षण किया और सब कुछ ठीक है।

यहाँ मेरा regex है:

var regex = new RegExp("(b(?:[0-9]{1,3}.){3}[0-9]{1,3}b:[0-9]+)|(localhost:[0-9]+)", "i");

और यहाँ मेरे पास स्निपेट है

console.log(regex.test("127.0.0.1:8080/test"));

परिणाम हमेशा गलत होता है।

मैंने कई तरीके आज़माए, string.match, regex package v0.1.1 भी।

क्या मैं कुछ छोड़ रहा हूं ?

धन्यवाद।

उत्तर:

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

समस्या सिर्फ इतनी है कि आप अपने बैकस्लैश से बच नहीं सकते हैं।

var regex = new RegExp("(\b(?:[0-9]{1,3}.){3}[0-9]{1,3}\b:[0-9]+)|(localhost:[0-9]+)", "i");

console.log(regex.test("127.0.0.1:8080/test"));
> true

यहाँ मूलभूत समस्या यह है कि बैकस्लैश का एक विशेष अर्थ है पलायन चरित्र, दोनों को जावास्क्रिप्ट में तथा करने के लिए।

इसलिए, जब जावास्क्रिप्ट आपके देखता है "b", यह एक पलायन चरित्र के रूप में व्याख्या करता है - इस मामले में एक बैकस्पेस चरित्र। यह व्याख्या होती है से पहले यह RegExp इंजन को जाता है।

इसलिए, आपको उन्हें दोगुना करके अपने बैकस्लैश से बचने की जरूरत है।