2010-08-24 16 views
71

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

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

इसके लिए सही रेगेक्स क्या है और सभी मदद बहुत अच्छी होगी।

उत्तर

114

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

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

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

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

+3

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

4

तुम सिर्फ इस्तेमाल कर सकते हैं

date.split(/-/); 

या

date.split('-'); 
+1

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

4

तो कुछ भी पर इसे विभाजित लेकिन संख्या:

date.split(/[^0-9]/); 
6

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

date.split(/\D/); 
0

या सिर्फ तारीख तार के लिए उपयोग 2015/05/20 या 2015.05.20

date.split(/\.|-/); 
संबंधित मुद्दे