2010-08-05 15 views
5

मान लें कि मेरे पास इन दो तार हैं: "5/15/1983" और "1983.05.15"। मान लें कि स्ट्रिंग में सभी वर्ण एक "विभाजक" वर्ण को छोड़कर, स्ट्रिंग में कहीं भी दिखाई दे सकते हैं। केवल एक विभाजक चरित्र होगा; स्ट्रिंग में दिए गए गैर-संख्यात्मक चरित्र के सभी उदाहरण समान होंगे।जावास्क्रिप्ट रेगेक्स: गैर-अंकीय चरित्र

मैं इस चरित्र को निकालने के लिए रेगेक्स का उपयोग कैसे कर सकता हूं? क्या नीचे दिए गए मुकाबले ज्यादा कुशल तरीका है?

"05-15-1983".replace(/\d/g, "")[0]; 

धन्यवाद!

उत्तर

13
"05-15-1983".match(/\D/) 

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

+0

हम सिर्फ, चरित्र की तलाश के ऊपर अपने कोड का उपयोग कर रहे तो अगर, यह होना चाहिए: "05-15-1983"। मैच (/ \ डी /) [0] [0] तब? क्या यह मेरे उदाहरण से बेहतर है? क्यूं कर? – JamesBrownIsDead

+0

@ जेम्स, जैसा कि मैंने कहा था, उपरोक्त एक सरणी है, लेकिन पूरी तरह से परिवर्तनीय है, इसलिए आपको शायद '[0] 'की आवश्यकता नहीं है। आगे, '05-15-1983"। मैच (/ \ डी /) [0] 'और' "05-15-1983"। मैच (/ \ डी /) [0] [0] 'बिल्कुल * बराबर। कोई चार प्रकार नहीं है, इसलिए अनुक्रमण एक स्ट्रिंग देता है। वास्तव में, आप जितनी चाहें उतनी '[0] 'जोड़ सकते हैं। मुझे लगता है कि यह जवाब बेहतर है, क्योंकि आपका उदाहरण मूल्यांकनकर्ता को प्रत्येक पत्र को देखने के लिए मजबूर करता है, और (तुच्छ) संयोग करता है। मेरा जवाब पहला गैर-अंक खोजने के बाद बंद हो जाएगा। –

0

स्पष्ट रूप से थके हुए या मेरे पिछले उत्तर पर ध्यान नहीं दे रहे हैं। उसके लिए माफ़ करना। क्या मैं चाहिए लिखा है था:

var regexp = new RegExp("([^0-9])","g"); 
var separator = regexp.exec("1985-10-20")[1]; 
बेशक

, मैथ्यू Flaschen काम करता है बस के रूप में अच्छी तरह से। मैं बस मेरा सही करना चाहता था।

+0

'exec' regExp पर एक फ़ंक्शन है, स्ट्रिंग नहीं, और लौटा सरणी लंबाई 1 है, इसलिए 1 मान्य अनुक्रमणिका नहीं है। –

+0

मैं स्पष्ट रूप से थक गया हूँ। मैंने उस वाक्यविन्यास को बहुत गुमराह किया। – eldarerathis

+0

और मैथ्यू के कोड की तरह, आपको उसी कारण से "जी" ध्वज की आवश्यकता नहीं है (टिप्पणियों में)। – slebetman

1

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

मैं ऊपर प्रयोग किया है:

<script> 
var myStr1 = "1981-01-05"; 
var myStr2 = "1981-01-05"; 
var RegEx1 = /[0-9]/g; 
var RegEx2 = /[^0-9]/g; 
var RegEx3 = /[^0-9]/; 
document.write('First : ' + myStr1.match(RegEx1) + '<br />'); 
document.write('tooo : ' + myStr2.replace(RegEx2, "") + '<br />'); 
document.write('Second : ' + myStr1.match(RegEx2) + '<br />' ); 
document.write('Third : ' + myStr1.match(RegEx3) + '<br />' ); 
</script> 

आउटपुट:

First : 1,9,8,1,0,1,0,5 
tooo : 19810105 
Second : -,- 
Third : - 

मुझे आशा है कि आप अपने जवाब मिल

संबंधित मुद्दे