2009-06-11 13 views
13

जावास्क्रिप्ट में PHP के preg_match_all के बराबर है? यदि नहीं, नियमित अभिव्यक्ति के सभी मैचों को सरणी में प्राप्त करने का सबसे अच्छा तरीका क्या होगा? मैं इसे आसान बनाने के लिए किसी भी जेएस लाइब्रेरी का उपयोग करने के लिए तैयार हूं।preg_match_all जेएस समकक्ष?

उत्तर

18

आप वैश्विक संशोधक के साथ match उपयोग कर सकते हैं:

>>> '1 2 3 4'.match(/\d/g); 
["1", "2", "3", "4"] 
+1

मुझे लगता है कि सिंटैक्स को नहीं समझ। – erm3nda

+0

@ erm3nda मुझे लगता है **/\ d/g ** क्या आप समझ में नहीं आये हैं। यहां [जावास्क्रिप्ट में नियमित अभिव्यक्ति बनाना] (https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions)। –

10

जॉन Resig 'Search and dont replace'

कहा जाता है यह का उपयोग कर जावास्क्रिप्ट के समारोह है, जो एक कॉलबैक लेता है की जगह काम करता है अपने ब्लॉग पर एक महान तकनीक के बारे में लिखा है कार्य, और मूल सामग्री को बेकार छोड़ने के लिए कुछ भी नहीं देता है।

यह वैश्विक मिलान का उपयोग करने और परिणामों की एक श्रृंखला पर पुनरावृत्ति करने से एक साफ-सुथरा हो सकता है, खासकर यदि आप कई समूहों को कैप्चर कर रहे हैं।

1

जेएस में PHP से preg_match_all का बेहतर समतुल्य निष्पादन() फ़ंक्शन का उपयोग करना होगा। यह आपको समूह को कैप्चर करने की अनुमति देगा, मिलान() के साथ आप ऐसा नहीं कर सकते हैं।

उदाहरण के लिए आप चर myString से कोष्ठक में हर समय और संख्या पर कब्जा करना चाहते हैं:

var myString = "10:30 am (15 left)11:00 am (15 left)11:30 am"; 
var pattern = /(\d{1,2}:\d{1,2}\s?[ap]m)\s\((\d+)/gi; 
var match; 
while (match = pattern.exec(myString)){ 
    console.log('Match: "' + match[0] + '" first group: -> "' + match[1] + '" second group -> ' + match[2]); 
} 

उत्पादन होगा:

Match: "10:30 am (15" first group: -> "10:30 am" second group -> 15 
Match: "11:00 am (15" first group: -> "11:00 am" second group -> 15 
संबंधित मुद्दे