Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

जावास्क्रिप्ट में नियमित अभिव्यक्ति मिलान


मान लीजिए हमें एक इनपुट स्ट्रिंग str और एक पैटर्न p दिया गया है, हमें . और * के समर्थन के साथ नियमित अभिव्यक्ति मिलान लागू करना आवश्यक है।

इन प्रतीकों के कार्य होने चाहिए -

  • . --> किसी भी एकल वर्ण से मेल खाता है।
  • * --> पूर्ववर्ती तत्व के शून्य या अधिक से मेल खाता है।

मिलान को संपूर्ण इनपुट स्ट्रिंग को कवर करना चाहिए (आंशिक नहीं)।

नोट

  • str खाली हो सकती है और केवल लोअरकेस अक्षर a-z रखती है।
  • p खाली हो सकती है और केवल लोअरकेस अक्षर a-z, और . या * जैसे वर्ण रखती है।

उदाहरण के लिए -

यदि इनपुट है -

const str = 'aa'; 
const p = 'a';

तो आउटपुट false होना चाहिए क्योंकि a संपूर्ण स्ट्रिंग aa से मेल नहीं खाता।

उदाहरण

निम्नलिखित कोड है -

const regexMatching = (str, p) => { 
  const ZERO_OR_MORE_CHARS = '*'; 
  const ANY_CHAR = '.'; 
  const match = Array(str.length + 1).fill(null).map(() => { 
    return Array(p.length + 1).fill(null); 
  }); 
  match[0][0] = true; 
  for (let col = 1; col <= p.length; col += 1) { 
    const patternIndex = col - 1; 
    if (p[patternIndex] === ZERO_OR_MORE_CHARS) { 
      match[0][col] = match[0][col - 2]; 
    } else { 
      match[0][col] = false; 
    } 
  } 
  for (let row = 1; row <= str.length; row += 1) { 
    match[row][0] = false; 
  } 
  for (let row = 1; row <= str.length; row += 1) { 
    for (let col = 1; col <= p.length; col += 1) { 
      const stringIndex = row - 1; 
      const patternIndex = col - 1; 
      if (p[patternIndex] === ZERO_OR_MORE_CHARS) { 
        if (match[row][col - 2] === true) { 
          match[row][col] = true; 
        } else if ( 
          (p[patternIndex - 1] === str[stringIndex] || p[patternIndex - 1] === ANY_CHAR) 
          && match[row - 1][col] === true 
        ) { 
          match[row][col] = true; 
        } else { 
          match[row][col] = false; 
        } 
      } else if ( 
        p[patternIndex] === str[stringIndex] || p[patternIndex] === ANY_CHAR 
      ) { 
        match[row][col] = match[row - 1][col - 1]; 
      } else { 
        match[row][col] = false; 
      } 
    } 
  } 
  return match[str.length][p.length]; 
}; 
console.log(regexMatching('aab', 'c*a*b'));

आउटपुट

कंसोल पर आउटपुट होगा -

true
  1. जावास्क्रिप्ट रेगुलर एक्सप्रेशन मॉडिफायर्स को उदाहरण सहित समझाएं जावास्क्रिप्ट रेगुलर एक्सप्रेशन मॉडिफायर्स को उदाहरण सहित समझाएं

    परिचय जावास्क्रिप्ट रेगुलर एक्सप्रेशन मॉडिफायर्स (फ्लैग्स) रेगुलर एक्सप्रेशन का वैकल्पिक भाग होते हैं जो केस-इनसेंसिटिव और ग्लोबल सर्च करने की अनुमति देते हैं। मॉडिफायर्स को एक साथ जोड़ा भी जा सकता है। मॉडिफायर्स मॉडिफायरविवरण gग्लोबल मिलान सक्षम करता है - पहले मिलान पर रुकने के बजाय सभी मिलान

  1. जावास्क्रिप्ट में नेम्ड फ़ंक्शन एक्सप्रेशन जावास्क्रिप्ट में नेम्ड फ़ंक्शन एक्सप्रेशन

    जावास्क्रिप्ट में नेम्ड फ़ंक्शन एक्सप्रेशन लागू करने के लिए निम्नलिखित कोड है। उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <t

  1. जावास्क्रिप्ट में yield* एक्सप्रेशन/कीवर्ड जावास्क्रिप्ट में yield* एक्सप्रेशन/कीवर्ड

    yield* एक्सप्रेशन का उपयोग दूसरे जनरेटर या इटरेबल ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है। जावास्क्रिप्ट में yield* एक्सप्रेशन/कीवर्ड लागू करने के लिए निम्नलिखित कोड है: उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <met