मैं एक नियमित अभिव्यक्ति बनाने की कोशिश कर रहा हूं ताकि केवल ऐसी संख्याएं: 2977777, (032)2977777, 297-77-77, 297 77 77 दर्ज किए जा सकते हैं।

साइट regexr.com पर, यह (\((032)\))?(297)([\- ]?7{2}){2} एक्सप्रेशन काम करता है परिणाम, कार्यक्रम केवल इस नंबर के लिए काम नहीं करता (032)2977777 कंसोल में परिणाम

form.addEventListener(
  "submit",
  function(event) {              //i think problem in \( and \) 
    var IndexTemplate = new RegExp("(\((032)\))?(297)([- ]?7{2}){2}");
    if (numberInput.value.length === 0) {
      numberLvivSpan.innerHTML = "Please enter the phone!";
      numberLvivSpan.className = "error active";
      event.preventDefault();
    } else if (!numberInput.value.replace(IndexTemplate, "").length) {
      numberLvivSpan.innerHTML = "Invalid phone!";
      numberLvivSpan.className = "error good";
      setTimeout(() => {
        numberLvivSpan.innerHTML = "";
        numberLvivSpan.className = "error";
      }, 1000);

      event.preventDefault();
    } else {
      numberLvivSpan.innerHTML = "Phone is valid!";
      numberLvivSpan.className = "error active";
      event.preventDefault();
    }
  },
  false
);
0
Roni_Droni 18 नवम्बर 2019, 20:43

1 उत्तर

सबसे बढ़िया उत्तर

यदि आप RegExp बनाने के लिए नए ऑपरेटर का उपयोग करते हैं, तो आपको स्ट्रिंग में बैकस्लैश चैटैक्टर्स को स्केप करना होगा।

यदि अभिव्यक्ति स्थिर है तो मैं आपको शाब्दिक RegExp का उपयोग करने की सलाह देता हूं।

जावास्क्रिप्ट रेगेक्सपी शाब्दिक और कंस्ट्रक्टर के बीच अंतर

तो निश्चित कोड इस तरह होना चाहिए:

form.addEventListener(
  "submit",
  function(event) {              //i think problem in \( and \) 
    var IndexTemplate = /(\((032)\))?(297)([- ]?7{2}){2}/;
    if (numberInput.value.length === 0) {
      numberLvivSpan.innerHTML = "Please enter the phone!";
      numberLvivSpan.className = "error active";
      event.preventDefault();
    } else if (!numberInput.value.replace(IndexTemplate, "").length) {
      numberLvivSpan.innerHTML = "Invalid phone!";
      numberLvivSpan.className = "error good";
      setTimeout(() => {
        numberLvivSpan.innerHTML = "";
        numberLvivSpan.className = "error";
      }, 1000);

      event.preventDefault();
    } else {
      numberLvivSpan.innerHTML = "Phone is valid!";
      numberLvivSpan.className = "error active";
      event.preventDefault();
    }
  },
  false
);

अपडेट करें: जब शाब्दिक का उपयोग करें और जब RegExp कंस्ट्रक्टर का उपयोग करें।

स्थैतिक RegExp के लिए, जो आपके वेब अनुप्रयोग निष्पादन के दौरान नहीं बदलेगा, आप दोनों का उपयोग कर सकते हैं लेकिन स्ट्रिंग स्कैप्ड वर्णों की सामान्य गलतियों से बचने के लिए शाब्दिक विधि का उपयोग करना पसंद किया जाता है।

डायनेमिक RegExp के लिए, जो एक इनपुट पर निर्भर करता है, आप RegExp बनाने के लिए केवल कंस्ट्रक्टर विधि का उपयोग कर सकते हैं। इसका एक उदाहरण replaceAll पद्धति का कार्यान्वयन हो सकता है, जो उस इनपुट को स्वीकार करता है जिसे आप पूरी स्ट्रिंग में बदलना चाहते हैं।

यहां आपके पास जावास्क्रिप्ट में RegExp के बारे में मोज़िला प्रलेखन है जिसमें शाब्दिक और निर्माण विधि के कुछ उदाहरण हैं।

एमडीएन रेगएक्सपी

0
Alex Gonzalez 19 नवम्बर 2019, 17:20