2009-11-12 15 views
17

मुझे एक रेगेक्स चाहिए जो इनपुट में केवल ए-जेड, ए-जेड, 0-9, _ वर्ण, और डॉट (।) की अनुमति देगा। मैंने कोशिश की:रेगेक्स मैच ए-जेड, ए-जेड, 0-9, _ और

[A-Za-z0-9_.] 

लेकिन यह काम नहीं किया। मेरे द्वारा यह कैसे किया जा सकता है?

+2

पैदा करता है इस एक है, इसकी एक सा अस्पष्ट पर थोड़ा और अधिक जानकारी के साथ क्या किया जा सका। कुछ नमूना इनपुट अच्छा होगा और जिस संदर्भ का आप इसका उपयोग कर रहे हैं, भाषा भी? –

उत्तर

40
^[A-Za-z0-9_.]+$ 

स्ट्रिंग के अंत तक शुरुआत से, इन वर्णों में से एक या अधिक से मेल खाते हैं।

संपादित करें:

ध्यान दें कि ^ और $ मैच शुरुआत और एक लाइन के अंत। जब मल्टीलाइन सक्षम होता है, तो इसका मतलब यह हो सकता है कि एक पंक्ति मेल खाती है, लेकिन पूर्ण स्ट्रिंग नहीं।

स्ट्रिंग की शुरुआत के लिए \A और \z अंत के लिए उपयोग करें।

उदाहरण के लिए देखें: http://msdn.microsoft.com/en-us/library/h5181w5w(v=vs.110).aspx

+3

भी^^ [\ w।] + $ 'हो सकता है, सोचा कि हर जगह काम नहीं करता है। – Kobi

+0

@ कोबी: यह लगभग हर जगह काम करता है, बस अलग है :) – SilentGhost

5

आप क्या दे दिया है से कार्य करना मैं मान लेंगे आप की जाँच करने के कि किसी जिन्हें आप सूचीबद्ध किया है के अलावा अन्य किसी भी पत्र दर्ज नहीं किए चाहते हैं।

[^A-Za-z0-9_.] 

और का उपयोग करें कि अपने कोड में एक मैच में, की तरह कुछ:

if (/[^A-Za-z0-9_.]/.match(your_input_string)) { 
    alert("you have entered invalid data"); 
} 

Hows कि है कि आप सूचीबद्ध के अलावा अन्य कोई भी वर्ण के लिए खोज करना चाहते हैं काम करने के लिए?

0

शायद, आपको और अधिक सटीक रूप से निर्दिष्ट करने की आवश्यकता है कि क्या काम नहीं किया और आप किस पर्यावरण में हैं।

दावा के अनुसार कि डॉट एक charackter वर्ग में विशेष है, यह हर प्रोग्रामिंग वातावरण में सच नहीं है। उदाहरण के लिए पर्ल स्क्रिप्ट निम्नलिखित

use warnings; 
use strict; 

my $str = '!!!.###'; 
$str =~ s/[A-Za-z_.]/X/g; 
print "$str\n"; 

!!!X### 
संबंधित मुद्दे