जावास्क्रिप्ट के लिए RegEx केवल अल्फ़ान्यूमेरिक की अनुमति देने के लिए


237

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

जवाबों:


512
/^[a-z0-9]+$/i

^         Start of string
[a-z0-9]  a or b or c or ... z or 0 or 1 or ... 9
+         one or more times (change to * to allow empty string)
$         end of string    
/i        case-insensitive

अद्यतन (सार्वभौमिक वर्णों का समर्थन)

यदि आपको इस regexp को सार्वभौमिक चरित्र का समर्थन करने की आवश्यकता है, तो आप यहां यूनिकोड चार्टर्स की सूची पा सकते हैं

उदाहरण के लिए: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/

यह फारसियों का समर्थन करेगा।


50
[az] अंतरराष्ट्रीय पात्रों से मेल नहीं खाता।
एरिक नॉर्मैंड

23
वाह - मुझे नहीं लगता कि मैंने कभी भी रेगेक्स को अच्छी तरह से समझा जब तक कि यह इस सरल तरीके से टूट नहीं गया। धन्यवाद!
मैट कैसहट जूल

समस्या - बिना जी / जी, आप केवल एक पंक्ति लपेटने से पहले मैचों की जगह लेते हैं।
15

5
एक और तरीका होगा, [^\W_]लेकिन [a-z0-9]/ मैं एक स्पष्ट तरीका है।
विटिम.स

36
@, मुझे लगता है कि आप अपने regex से संबंधित उत्तरों की व्याख्या कैसे करते हैं। मेरी राय में, स्पष्टीकरण के बिना Regexes, बेकार की तरह हैं। क्योंकि आपको लगता है कि एक बार "हाँ यह काम करता है" और अचानक, जब आपको इसे बदलने की आवश्यकता होती है, तो आप एक अलग उपयोग-मामले के साथ सही वापस आते हैं, बजाय वास्तव में यह सीखने के कि रेगेक्स क्या करता है । इसके अलावा, आप regex प्रलेखन की तुलना में समझना आसान है: P
क्रिस Cirefice

147

यदि आप एक बदले हुए परिणाम को वापस करना चाहते हैं, तो यह काम करेगा:

var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);

यह लौटेगा:

Test123TEST

ध्यान दें कि जीआई आवश्यक है क्योंकि इसका मतलब है वैश्विक (न केवल पहले मैच पर), और केस-असंवेदनशील, यही वजह है कि मेरे पास ए-जेडए-जेड के बजाय एज़ है। और कोष्ठक के अंदर ^ का अर्थ है "इन कोष्ठकों में कुछ भी नहीं"।

चेतावनी: यदि आप चाहते हैं तो अल्फ़ान्यूमेरिक महान है। लेकिन अगर आप किसी व्यक्ति के नाम या भौगोलिक क्षेत्र जैसे किसी अंतर्राष्ट्रीय बाजार में इसका उपयोग कर रहे हैं, तो आपको यूनिकोड वर्णों की आवश्यकता है, जो यह नहीं करेगा। उदाहरण के लिए, यदि आपके पास ""lvarö" जैसा नाम है, तो यह "lvar" बना देगा।


3
यह स्पष्टीकरण के साथ एक महान जवाब है। यदि आपको उनकी आवश्यकता है तो रिक्त स्थान की अनुमति देना याद रखें। .replace (/ [^ a-z0-9 \] / gi, '')
जो जॉन्सटन

82

वर्ण वर्ग का प्रयोग करें। निम्नलिखित एक के बराबर है ^[a-zA-Z0-9_]+$:

^\w+$

स्पष्टीकरण:

  • ^ स्ट्रिंग की शुरुआत
  • किसी भी शब्द वर्ण (AZ, az, 0-9, _)।
  • $ स्ट्रिंग का अंत

/[^\w]|_/gयदि आप अंडरस्कोर से मेल नहीं खाना चाहते हैं तो उपयोग करें ।


20
\ w वास्तव में [a-zA-Z_0-9] के बराबर है, इसलिए आपका RegEx अंडरस्कोर [_] से भी मेल खाता है।
मार्टिन ब्राउन

लगभग अल्फ़ान्यूमेरिक अल्फ़ान्यूमेरिक बिल्कुल भी नहीं है, लेकिन धन्यवाद आपके ans ने मुझे बहुत मदद की
ajax333221

सच है, पोस्ट के रूप में क्यू के लिए एक सख्त जवाब नहीं है, लेकिन वास्तव में मैं क्या देख रहा था ..
प्रोटोटाइप

क्षमा करें, लेकिन यह अंतर्राष्ट्रीय पात्रों से मेल नहीं खाता, जैसे कि
एलेक्स Mi

बहुत बुरा यह मेरे उच्चारण को दूर करता है
मिगुएल

38
/^([a-zA-Z0-9 _-]+)$/

उपरोक्त रेगेक्स एक स्ट्रिंग को साइड में स्पेस देता है और विशेष वर्णों को प्रतिबंधित करता है। यह केवल az, AZ, 0-9, स्पेस, अंडरस्कोर और डैश की अनुमति देता है।


14
^\s*([0-9a-zA-Z]*)\s*$

या, यदि आप न्यूनतम एक वर्ण चाहते हैं:

^\s*([0-9a-zA-Z]+)\s*$

वर्ग कोष्ठक वर्णों के एक समूह को इंगित करते हैं। ^ इनपुट की शुरुआत है। $ इनपुट का अंत है (या आपके विकल्पों पर निर्भर करते हुए, नईलाइन)। \ _ व्हाट्सएप है।

पहले और बाद में व्हाट्सएप वैकल्पिक है।

कोष्ठक समूह के संचालक हैं जो आपको अपनी इच्छित जानकारी निकालने की अनुमति देते हैं।

संपादित करें: \ w वर्ण सेट के मेरे गलत उपयोग को हटा दिया।


6

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

/[^a-z\d]/i    

यहाँ एक उदाहरण है:

var alphanumeric = "someStringHere";
var myRegEx  = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));

तार्किक नहीं ऑपरेटर को नोटिस करें isValid, क्योंकि मैं परीक्षण कर रहा हूं कि क्या स्ट्रिंग गलत है, यह नहीं कि क्या यह वैध है।


6

यह काम करेगा

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$

यह केवल अल्फ़ान्यूमेरिक वर्णों को ही स्वीकार करता है:
परीक्षण के मामले:

dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid, 
abchfe   - invalid,
 abd()*  - invalid, 
42232^5$ - invalid

या

आप भी इसे आजमा सकते हैं। यह अभिव्यक्ति कम से कम एक संख्या और एक वर्ण और कोई अन्य विशेष वर्ण संतुष्ट करती है

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$

कोणीय में परीक्षण कर सकते हैं जैसे:

$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);

PLUNKER डेमो

संदर्भित: AngularJS में अक्षरांकीय के लिए नियमित अभिव्यक्ति


4

अपने पूरे प्रोजेक्ट में उपयोग करने के लिए स्ट्रिंग प्रोटोटाइप बढ़ाएँ

    String.prototype.alphaNumeric = function() {
        return this.replace(/[^a-z0-9]/gi,'');
    }

उपयोग:

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay

3

इन कोड को अपने SCRATCHPAD पर इनपुट करें और कार्रवाई देखें।

var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');

2

ऐसा लगता है जैसे कई उपयोगकर्ताओं ने देखा है कि यह नियमित रूप से अभिव्यक्ति लगभग निश्चित रूप से विफल होगी जब तक कि हम अंग्रेजी में सख्ती से काम नहीं कर रहे हैं। लेकिन मुझे लगता है कि आगे एक आसान तरीका है जो इतना सीमित नहीं होगा।

  1. सभी UPPERCASE में अपने स्ट्रिंग की एक प्रतिलिपि बनाएँ
  2. सभी लोअरकेस में दूसरी कॉपी बनाएं

कोई भी चरित्र जो उन तार में मेल खाता है, निश्चित रूप से प्रकृति में वर्णनात्मक नहीं है।

let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
    let bIsAlphabetic = (copy1[i] != copy2[i]);
}

वैकल्पिक रूप से, आप केवल 0 से 9 के अंकों की तलाश करके भी संख्या विज्ञान का पता लगा सकते हैं।


2

इसे आज़माएं ... आप अपने आईडी के साथ फ़ील्ड आईडी बदलें ... az (to z), AZ (A से Z), 0-9 (0 से 0)

jQuery(document).ready(function($){
    $('#name').keypress(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9\s]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        e.preventDefault();
        return false;
    });
});

2

केवल NUMBERS, ALPHABETS और स्पेशल चार्जर्स स्वीकार करने के लिए JAVASCRIPT

document.getElementById("onlynumbers").onkeypress = function (e) {
	onlyNumbers(e.key, e)
};

document.getElementById("onlyalpha").onkeypress = function (e) {
	onlyAlpha(e.key, e)
};

document.getElementById("speclchar").onkeypress = function (e) {
	speclChar(e.key, e)
};

function onlyNumbers(key, e) {
	var letters = /^[0-9]/g; //g means global
	if (!(key).match(letters)) e.preventDefault();
}

function onlyAlpha(key, e) {
	var letters = /^[a-z]/gi; //i means ignorecase
	if (!(key).match(letters)) e.preventDefault();
}

function speclChar(key, e) {
	var letters = /^[0-9a-z]/gi;
	if ((key).match(letters)) e.preventDefault();
}
<html>
   <head></head>
   <body>
      Enter Only Numbers: 
      <input id="onlynumbers" type="text">
      <br><br>
      Enter Only Alphabets: 
      <input id="onlyalpha" type="text" >
      <br><br>
      Enter other than Alphabets and numbers like special characters: 
      <input id="speclchar" type="text" >
   </body>
</html>


1

Gayan Dissanayakeइंगित से भी बेहतर है ।

/^[-\w\s]+$/

अब के ^[a-zA-Z0-9]+$रूप में प्रतिनिधित्व किया जा सकता है^\w+$

आप अंतरिक्ष के बजाय \ s का उपयोग करना चाह सकते हैं । ध्यान दें कि \ s और रिक्त स्थान को ध्यान में न केवल एक अंतरिक्ष चरित्र लेता है।


1

मेरे पास Samsung Galaxy A10s 6.2-Inch (2GB, 32GB ROM) Android 9.0, (13MP + 2MP) + 8MP डुअल सिम 4000mAh 4G LTE स्मार्टफोन - ब्लैक (BF19) के समान है।

नीचे मैंने क्या किया है:

string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()

ध्यान दें कि मैंने अनुमति दी है और ,._-फिर उपयोग करने के लिए और स्थान को क्रमशः बदलने के लिए ।split()join(),--

मैंने कुछ इस तरह से प्राप्त किया: samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20जो मैं चाहता था।

एक बेहतर समाधान हो सकता है लेकिन यह वही है जो मुझे मेरे लिए ठीक काम कर रहा है।


0

इस स्थिरांक को बचाएं

const letters = /^[a-zA-Z0-9]+$/

अब, भाग उपयोग की जाँच के लिए .match ()

const string = 'Hey there...' // get string from a keyup listner
let id = ''
// iterate through each letters
for (var i = 0; i < string.length; i++) {
  if (string[i].match(letters) ) {
    id += string[i]
  } else {
    // In case you want to replace with something else
    id += '-'  
  }
}
return id

-1

केवल NUMBERS, ALPHABETS और स्पेशल चार्जर्स स्वीकार करने के लिए Jquery

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<body>
Enter Only Numbers: 
<input type="text" id="onlynumbers">
<br><br>
Enter Only Alphabets: 
<input type="text" id="onlyalpha">
<br><br>
Enter other than Alphabets and numbers like special characters: 
<input type="text" id="speclchar">

<script>
    $('#onlynumbers').keypress(function(e) {
      var letters=/^[0-9]/g; //g means global
      if(!(e.key).match(letters)) e.preventDefault();
	});
    
    $('#onlyalpha').keypress(function(e) {
      var letters=/^[a-z]/gi; //i means ignorecase
      if(!(e.key).match(letters)) e.preventDefault();
	});
    
    $('#speclchar').keypress(function(e) {
      var letters=/^[0-9a-z]/gi; 
      if((e.key).match(letters)) e.preventDefault();
	});
    </script>
</body>
</html>

**JQUERY to accept only NUMBERS , ALPHABETS and SPECIAL CHARACTERS **


<!DOCTYPE html>
    $('#onlynumbers').keypress(function(e) {
      var letters=/^[0-9]/g; //g means global
      if(!(e.key).match(letters)) e.preventDefault();
    });

    $('#onlyalpha').keypress(function(e) {
      var letters=/^[a-z]/gi; //i means ignorecase
      if(!(e.key).match(letters)) e.preventDefault();
    });

    $('#speclchar').keypress(function(e) {
      var letters=/^[0-9a-z]/gi; 
      if((e.key).match(letters)) e.preventDefault();
    });
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"> 

केवल नंबर

दर्ज करें : केवल अक्षर

दर्ज करें : वर्णमाला और विशेष वर्णों की संख्या के अलावा अन्य दर्ज करें:

</body>
</html>

1
jquas

हाँ। उपर्युक्त कोड काम कर रहा है आप रन कोड स्निपेट पर क्लिक करके जांच कर सकते हैं।
प्रणव भट

jquery एक जावास्क्रिप्ट लाइब्रेरी है
प्रणव भट्ट

हम जावास्क्रिप्ट के बजाय jquery का उपयोग कर सकते हैं यह आसान होगा :)
प्रणव भट्ट

मैं सॉरी हूँ आप सही थे .. मैंने जावास्क्रिप्ट के साथ एक और पोस्ट किया है! अनेक अनेक धन्यवाद!
प्रणव भट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.