2009-02-23 22 views
38

मैं वर्तमान में अक्षरों, संख्याओं, रिक्त स्थान और अंडरस्कोर स्वीकार करने के लिए इस regex ^[A-Z0-9 _]*$ का उपयोग कर रहा हूं। स्ट्रिंग में कहीं कम से कम एक नंबर या अक्षर की आवश्यकता के लिए मुझे इसे संशोधित करने की आवश्यकता है। किसी भी सहायता की सराहना की जाएगी!नियमित अभिव्यक्ति: अक्षर, संख्याएं और रिक्त स्थान (कम से कम एक अक्षर या संख्या के साथ)

यह मेरी वेबसाइट के लिए उपयोगकर्ता नाम मान्य करने के लिए होगा। मैं वास्तव में जितना चाहूं उतने पात्रों का समर्थन करना चाहता हूं, लेकिन सिर्फ यह सुनिश्चित करना चाहता हूं कि मैं कोड इंजेक्शन को रोकूं और वह वर्ण सभी उपयोगकर्ताओं के लिए ठीक प्रदर्शित होंगे। इसलिए मैं निश्चित रूप से regex सत्यापन सुझावों के लिए खुला हूं जो वर्णों के विस्तृत सेट का समर्थन करेंगे।

+0

के रूप में टेक्स्ट फ़ील्ड में कुछ कारणों से अंडरस्कोर को बाहर निकालना, लेकिन आपको बिंदु मिल गया है .. – makeee

+0

@makeee regex को कोड के रूप में चिह्नित करें (इसे 'अक्षर के साथ घेरे) और आप ठीक रहेगा। –

+0

या मैंने जो किया, वह करें "अंडरस्कोर" से बचें। – paxdiablo

उत्तर

53

आप बस अपना वर्तमान आरई निर्दिष्ट करने की आवश्यकता एक पत्र/संख्या फिर से अपने वर्तमान आरई द्वारा पीछा के बाद:

^[A-Z0-9 _]*[A-Z0-9][A-Z0-9 _]*$ 

जब से तुम अब कहा गया है कि वे जावास्क्रिप्ट आर ई कर रहे हैं, वहाँ एक उपयोगी साइट here है जहां आप इनपुट डेटा के खिलाफ आरई का परीक्षण कर सकते हैं।

आप छोटे अक्षरों के साथ-साथ करना चाहते हैं:

^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$ 
+0

"___ ___ ___" जैसे स्टिंग पर, जिसमें कोई भी आवश्यक संख्या या अक्षर नहीं है, आपके द्वारा कोशिश की गई रेगेक्स कई संयोजनों को आजमाएगी जो काम नहीं कर सकती हैं। मुझे लगता है कि यह एन संयोजनों के बारे में कोशिश करेगा। डैनियल एल का जवाब बेहतर काम करता है। – SingleNegationElimination

+0

यह एक बेहद अत्याधुनिक आरई इंजन होगा, @ टोकन। मैंने देखा है कि अधिकांश में विशिष्ट मानों को देखने के लिए ऑप्टिमाइज़ेशन हैं, जैसे ^, $ और [ए-जेड 0-9]। इन सभी अन्य स्थितियों से संतुष्ट होने के बाद बैकट्रैकिंग खोज केवल आवश्यक हो जाती है। संतुष्ट नहीं है कोई मैच नहीं। – paxdiablo

+0

'एए', '99', '_999_888' जैसे तारों पर काम नहीं करता है, ... –

9
^[ _]*[A-Z0-9][A-Z0-9 _]*$ 

आप वैकल्पिक रूप से कुछ रिक्त स्थान तो आप एक अक्षर या संख्या, और फिर संख्या, अक्षर, रिक्त स्थान की एक मनमाना संख्या की जरूरत है या उस के बाद रेखांकित किया है या सामने रेखांकित कर सकते हैं।

कुछ जो केवल रिक्त स्थान और अंडरस्कोर हैं, [A-Z0-9] भाग में विफल हो जाएंगे।

+0

'ए', '9', 'एए', 'एए', जैसे तारों पर काम नहीं करता है। 99 ',' _ 999_888 ',' एएए_एसएस एस ' –

+0

मुझे विश्वास नहीं है कि आपने यह कोशिश की है, रेनाड, अन्यथा आपको पता चलेगा कि यह झूठा था। – paxdiablo

+0

मेरे पास है, और आपको यह देखने के लिए केवल रेगेक्स (वर्तमान में) को देखने की आवश्यकता है कि यह 'ए' –

7

आप उपयोग कर सकते हैं एक lookaround:

^(?=.*[A-Za-z0-9])[A-Za-z0-9 _]*$ 

यह आगे कि स्ट्रिंग एक पत्र या संख्या है की जाँच करेगा, अगर यह कहीं भी होगी करता है जांचें कि शेष वर्ण आपकी आवश्यकताओं को पूरा करते हैं। यह शायद सुधार किया जा सकता है, लेकिन ऐसा लगता है कि यह मेरे परीक्षणों के साथ काम करता है।

अद्यतन:

modificationsChris Lutz ने सुझाव दिया जोड़ना:

^(?=.*[^\W_])[\w ]*$/ 
+1

आपको इसका उपयोग नहीं करना चाहिए। उन्होंने कहा कि वह रिक्त स्थान चाहता है, लेकिन टैब का उल्लेख नहीं किया। लेकिन जबकि हम इसमें हैं, [ए-ज़ा-जे 0-9] के बजाय [^ \ W_] का उपयोग क्यों नहीं करें? –

+0

धन्यवाद। मैंने रेगेक्स के हिस्से को और अधिक स्पष्ट रूप से बदल दिया। इसे पकड़ने के लिए धन्यवाद। – gpojd

+0

डॉन ' 'ए', '9', 'एए', 'एए', '99', '_ 999_888', 'एएए_एसएस एस' –

13

आगे जाना है और वहाँ एक बात समझ के बजाय बार-बार उपयोग करने के लिए इन:

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

मैं दो है (उम्मीद है कि बेहतर) उन दो के लिए प्रतिस्थापन:

[\w ] 
[^\W_] 

पहला व्यक्ति किसी भी शब्द चरित्र (अल्फान्यूमेरिक और _, साथ ही यूनिकोड) और अंतरिक्ष से मेल खाता है। दूसरा मैच एक गैर-शब्द वर्ण या अंडरस्कोर नहीं है (केवल अल्फान्यूमेरिक, साथ ही यूनिकोड)।

यदि आप यूनिकोड मिलान नहीं करना चाहते हैं, तो अन्य उत्तरों के साथ चिपके रहें। लेकिन ये सिर्फ आंखों पर (मेरी राय में) आसान लगते हैं। इस लेखन के रूप में "पसंदीदा" जवाब ले रहा है और कम regexes का उपयोग कर हमें देता है:

^[\w ]*[^\W_][\w ]*$ 

शायद अधिक पठनीय, शायद कम। निश्चित रूप से छोटा आपकी पंसद।

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

बस एक नोट के रूप में, मैं पर्ल शैली regexes यहाँ यह सोचते हैं रहा हूँ। आपका रेगेक्स इंजन \ w और \ W जैसी चीज़ों का समर्थन कर सकता है या नहीं।

संपादित करें 2: जे एस regex परीक्षक है कि किसी को और कुछ बुनियादी उदाहरण से जुड़ा हुआ साथ

परीक्षण मेरा ठीक काम किया। कुछ भी व्यापक नहीं किया, बस यह सुनिश्चित करना चाहता था कि जेएस में \ डब्ल्यू और \ डब्ल्यू ठीक काम करें।

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

जे एस regex परीक्षक साइट के साथ कुछ यूनिकोड का परीक्षण करने की कोशिश की करने के बाद, मैं इस समस्या की खोज की है: उस पृष्ठ यूनिकोड के बजाय आईएसओ उपयोग करता है। कोई आश्चर्य नहीं कि मेरा जापानी इनपुट मेल नहीं खाता था। ओह ठीक है, इसे ठीक करना मुश्किल नहीं होना चाहिए:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

या तो। मुझे नहीं पता कि जावास्क्रिप्ट तक क्या किया जाना चाहिए, लेकिन मुझे यकीन है कि यह मुश्किल नहीं है।

+0

+1। मैंने इसे अपना रास्ता दिखाने के लिए अपना जवाब अपडेट किया। – gpojd

+0

धन्यवाद! यूनिकोड कवर किस प्रकार के पात्र करता है? मैं "à" जैसे पात्रों का समर्थन करने में सक्षम होना पसंद करूंगा। – makeee

+0

यूनिकोड मूल रूप से सब कुछ शामिल करता है, हालांकि आपको वेबपृष्ठों और प्रोग्रामों को यूनिकोड के साथ काम करने के लिए कुछ और काम करना पड़ सकता है। –

2

मेरे लिए @ "^ [\ w] + $" काम कर रहा है, संख्या, वर्णमाला और स्थान की अनुमति है, लेकिन कम से कम एक अक्षर या संख्या टाइप करने की आवश्यकता है।

0

यह विशेष वर्ण और अग्रणी और पीछे वाले स्पेस के खिलाफ मान्य करेगा:

var strString = "Your String"; 

strString.match(/^[A-Za-z0-9][A-Za-z0-9 ]\*[A-Za-z0-9]\*$/) 
0
$("#ValuationName").bind("keypress", function (event) { 
    if (event.charCode!=0) { 
     var regex = new RegExp("^[a-zA-Z ]+$"); 
     var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
     if (!regex.test(key)) { 
      event.preventDefault(); 
      return false; 
     } 
    } 
}); 
0

, बस यू

"onlyLetterNumberSp": { 
       "regex": ^[A-Za-z0-9 _]*[A-Za-z0-9][A-Za-z0-9 _]*$, 
       "alertText": "* No special characters allowed" 
      }, 

jquery.validationEngine-en.js फाइल करने के लिए इस जोड़ने और इसे कॉल कर सकते हैं

<input type="text" class="form-control validate[required,custom[onlyLetterNumberSp]]" id="title" name="title" placeholder="Title"/> 
संबंधित मुद्दे

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