जावास्क्रिप्ट विभाजन regex सवाल


116

हैलो, मैं कोशिश कर रहा हूं कि मुझे लगा कि जावास्क्रिप्ट में एक आसान रेगेक्स होगा लेकिन मुझे बहुत परेशानी दे रहा है। मैं चाहता हूं कि जावास्क्रिप्ट विभाजन को किसी '' - ',', ',' / 'और' '' द्वारा विभाजित किया जाए।

var date = "02-25-2010";
var myregexp2 = new RegExp("-."); 
dateArray = date.split(myregexp2);

किसी भी और सभी मदद के लिए सही regex क्या है महान होगा।

जवाबों:


174

आपको एक वर्ण वर्ग में विभाजित किए जाने वाले पात्रों को रखने की आवश्यकता है , जो नियमित अभिव्यक्ति इंजन को बताता है "इनमें से कोई भी चरित्र एक मैच है"। आपके उद्देश्यों के लिए, यह इस तरह दिखेगा:

date.split(/[.,\/ -]/)

हालांकि डैश एक सीमा विनिर्देशक (यानी के रूप में चरित्र कक्षाओं में विशेष अर्थ नहीं होता [a-z]रूप में एक ही मतलब है [abcdefghijklmnopqrstuvwxyz]), यदि आप कक्षा में आखिरी बात के रूप में यह डाल यह एक शाब्दिक पानी का छींटा मतलब करने के लिए लिया जाता है और भाग निकले किए जाने की जरूरत नहीं है।

यह समझने के लिए कि आपका पैटर्न क्यों काम नहीं करता है, /-./किसी भी चरित्र के बाद शाब्दिक डैश चरित्र से मेल खाने के लिए नियमित अभिव्यक्ति इंजन को बताता है ( डॉट्स नियमित अभिव्यक्तियों में वाइल्डकार्ड वर्ण हैं)। "02-25-2010" के साथ, यह हर बार विभाजित होता है "-2" का सामना करना पड़ता है, क्योंकि डैश मैच और डॉट "2" से मेल खाता है।


3
आप यह भी उल्लेख कर सकते हैं कि एक वर्ण वर्ग के अंदर एक डॉट का कोई विशेष अर्थ नहीं है - एक वाइल्डकार्ड चरित्र के रूप में अभिनय करने के बजाय (जो कि कोई मतलब नहीं होगा), यह एक शाब्दिक के रूप में कार्य करता है।
बॉबी जैक

11

या बस (कुछ भी लेकिन संख्या):

date.split(/\D/);

6

आप बस इस्तेमाल कर सकते हैं

date.split(/-/);

या

date.split('-');

1
अपने कोड से पहले एक लाइन ब्रेक लगाएं और 4 रिक्त स्थान इसे ठीक से प्रारूपित करेंगे।
ब्रैंडन


3

अपनी स्ट्रिंग कहें:

let str = `word1
word2;word3,word4,word5;word7
word8,word9;word10`;

आप निम्नलिखित सीमांकक द्वारा स्ट्रिंग को विभाजित करना चाहते हैं:

  • कोलोन
  • सेमीकोलन
  • नई पंक्ति

आप स्ट्रिंग को इस तरह विभाजित कर सकते हैं:

let rawElements = str.split(new RegExp('[,;\n]', 'g'));

अंत में, आपको सरणी में तत्वों को ट्रिम करने की आवश्यकता हो सकती है:

let elements = rawElements.map(element => element.trim());


-1

इसके बजाय यह प्रयास करें

date.split (/ \ डब्ल्यू + /)


क्या आप बता सकते हैं कि यह पहले से पहले से ही पोस्ट किए गए 5+ से बेहतर उत्तर क्यों है? और यह वास्तव में कैसे काम करता है?
मज़ारेज़

यह वास्तव में मेरे लिए सभी उत्तरों में से सबसे अच्छा काम किया।
reectrix
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.