मैं एक नियमित अभिव्यक्ति देना चाहता हूं जो यह जांचती है कि क्या एक स्ट्रिंग में केवल ऊपरी और निचले अक्षर, संख्याएं और अंडरस्कोर शामिल हैं।
मैं एक नियमित अभिव्यक्ति देना चाहता हूं जो यह जांचती है कि क्या एक स्ट्रिंग में केवल ऊपरी और निचले अक्षर, संख्याएं और अंडरस्कोर शामिल हैं।
जवाबों:
एक स्ट्रिंग से मेल खाने के लिए जिसमें केवल शामिल है वे अक्षर (या एक खाली स्ट्रिंग) हैं, कोशिश करें
"^[a-zA-Z0-9_]*$"
यह .NET रेग्युलर एक्सप्रेशंस के लिए काम करता है, और शायद बहुत सी अन्य भाषाओं के लिए भी।
इसे तोड़कर:
^ : start of string
[ : beginning of character group
a-z : any lowercase letter
A-Z : any uppercase letter
0-9 : any digit
_ : underscore
] : end of character group
* : zero or more of the given characters
$ : end of string
यदि आप खाली स्ट्रिंग्स की अनुमति नहीं देना चाहते हैं, तो * के बजाय + का उपयोग करें।
जैसा कि अन्य ने बताया है, कुछ रेगीक्स भाषाओं के लिए एक संक्षिप्त रूप है [a-zA-Z0-9_]
। .NET रेगेक्स भाषा में, आप ECMAScript व्यवहार को चालू कर सकते हैं और \w
शॉर्टहैंड (उपज ^\w*$
या ^\w+$
) के रूप में उपयोग कर सकते हैं । ध्यान दें कि अन्य भाषाओं में, और डिफ़ॉल्ट रूप से .NET में, \w
कुछ हद तक व्यापक है, और अन्य प्रकार के यूनिकोड वर्णों के साथ भी मेल खाएगा (यह इंगित करने के लिए जनवरी के लिए धन्यवाद)। यदि आप वास्तव में केवल उन वर्णों का मिलान करना चाहते हैं , तो स्पष्ट (लंबा) फ़ॉर्म का उपयोग करना संभवतः सबसे अच्छा है।
[\p{upper}\p{lower}\p{gc=Number}_]
क्या आपको यह सही करने की आवश्यकता है, यह मानते हुए कि कोई संयोजन वर्ण नहीं हैं।
यहाँ बहुत अधिक मात्रा में है, और मैं इसके खिलाफ गहराई से हूं, इसलिए, मेरा निर्णायक जवाब होगा:
/^\w+$/
\w
के बराबर है [A-Za-z0-9_]
, जो आप चाहते हैं बहुत सुंदर है। (जब तक कि हम मिक्स में यूनिकोड न डालें)
+
क्वांटिफायर का उपयोग करके आप एक या अधिक वर्णों से मेल खाएँगे। यदि आप एक खाली स्ट्रिंग भी स्वीकार करना चाहते हैं, तो *
इसके बजाय उपयोग करें ।
\w
आमतौर पर केवल ASCII तक ही सीमित नहीं है।
[a-z]
इसकी विविधताएं। \w
गैर-लैटिन वर्णों को भी कैप्चर करेगा। जैसे šēēā
याкукареку
आप जाँचना चाहते हैं कि प्रत्येक वर्ण आपकी आवश्यकताओं से मेल खाता है, यही कारण है कि हम उपयोग करते हैं:
[A-Za-z0-9_]
और आप शॉर्टहैंड संस्करण का उपयोग भी कर सकते हैं:
\w
जो समतुल्य है (कुछ रेगेक्स फ्लेवर में, इसलिए सुनिश्चित करें कि आप इसे इस्तेमाल करने से पहले जांच लें)। फिर यह इंगित करने के लिए कि पूरा स्ट्रिंग मेल खाना चाहिए, आप उपयोग करते हैं:
^
इंगित करने के लिए स्ट्रिंग को उस चरित्र से शुरू करना चाहिए, फिर उपयोग करें
$
संकेत करने के लिए स्ट्रिंग को उस चरित्र के साथ समाप्त होना चाहिए। फिर उपयोग करें
\w+ or \w*
"1 या अधिक", या "0 या अधिक" इंगित करने के लिए। यह सब एक साथ रखकर, हमारे पास है:
^\w*$
उम ... सवाल: क्या इसके लिए कम से कम एक चरित्र होना चाहिए या नहीं? क्या यह एक रिक्त स्ट्रिंग हो सकती है?
^[A-Za-z0-9_]+$
कम से कम एक ऊपरी या निचले मामले अल्फ़ान्यूमेरिक या अंडरस्कोर करेंगे। यदि यह शून्य लंबाई हो सकती है, तो बस इसके लिए + स्थानापन्न करें *
^[A-Za-z0-9_]*$
संपादित करें:
यदि डियाट्रिटिक्स को शामिल करने की आवश्यकता है (जैसे कि सीडिला - ç) तो आपको शब्द चरित्र का उपयोग करने की आवश्यकता होगी जो उपरोक्त के समान ही है, लेकिन इसमें डियाक्रिटिक वर्ण शामिल हैं:
^\w+$
या
^\w*$
हालाँकि यह तुलना में अधिक क्रियात्मक है \w
, मैं व्यक्तिगत रूप से पूर्ण पोसिक्स चरित्र वर्ग नामों ( http://www.zytrax.com/tech/web/regex.htm#special ) की पठनीयता की सराहना करता हूं, इसलिए मैं कहूंगा:
^[[:alnum:]_]+$
हालाँकि, उपरोक्त लिंक पर प्रलेखन में कहा गया है कि \w
"किसी भी वर्ण का मिलान 0 - 9, A - Z और a - z (POSIX [: alnum:] के बराबर)] में किया जाएगा," मुझे यह सच नहीं लगा है । grep -P
वैसे भी साथ नहीं । यदि आप उपयोग करते हैं, [:alnum:]
लेकिन यदि आप उपयोग नहीं करते हैं तो आपको अंडरस्कोर स्पष्ट रूप से शामिल करने की आवश्यकता है \w
। आप लघु और मधुर के लिए निम्नलिखित को नहीं हरा सकते हैं:
^\w+$
पठनीयता के साथ-साथ, POSIX चरित्र वर्गों ( http://www. अनियमित-expressions.info/posixbrackets.html) का उपयोग करने का अर्थ है कि आपका regex गैर ASCII स्ट्रिंग्स पर काम कर सकता है, जो कि रेंज आधारित रेग्जेस तब से नहीं करेंगे, जब तक आप इस पर भरोसा नहीं करेंगे। ASCII वर्णों के अंतर्निहित क्रम जो अन्य वर्ण सेटों से भिन्न हो सकते हैं और इसलिए कुछ गैर-ASCII वर्णों (जैसे œ) के अक्षरों को बाहर कर देंगे, जिन्हें आप कैप्चर करना चाहते हैं।
कंप्यूटर विज्ञान में, एक अल्फ़ान्यूमेरिक मान का अर्थ अक्सर पहला वर्ण संख्या नहीं होता है, लेकिन एक वर्णमाला या अंडरस्कोर होता है। इसके बाद चरित्र हो सकता है 0-9
, A-Z
, a-z
, या अंडरस्कोर ( _
)।
यहां बताया गया है कि आप ऐसा कैसे करेंगे:
Php के तहत परीक्षण किया गया:
$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'
या यह लो
^[A-Za-z_][A-Za-z\d_]*$
और इसे अपनी विकास भाषा में रखें।
कैसा रहेगा:
^([A-Za-z]|[0-9]|_)+$
... यदि आप स्पष्ट होना चाहते हैं, या:
^\w+$
... यदि आप संक्षिप्त (पर्ल सिंटैक्स) पसंद करते हैं।
"कम से कम एक" सामान करने के लिए लुकहैड्स का उपयोग करें। मेरा विश्वास करो यह बहुत आसान है।
यहां एक उदाहरण दिया गया है जिसमें 1-10 वर्णों की आवश्यकता होगी, जिसमें कम से कम एक अंक और एक अक्षर होगा:
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$
नोट: इस्तेमाल किया जा सकता है \ w लेकिन फिर ECMA / यूनिकोड विचार \ w "शब्द चरित्र" के चरित्र कवरेज को बढ़ाने में खेलते हैं।
इन बहुभाषी एक्सटेंशन की कोशिश करें जो मैंने स्ट्रिंग के लिए किए हैं।
IsAlphaNumeric - स्ट्रिंग में कम से कम 1 अल्फा (यूनिकोड रेंज में पत्र, चारसेट में निर्दिष्ट) और कम से कम 1 नंबर (संख्या में निर्दिष्ट) होना चाहिए। इसके अलावा, स्ट्रिंग में केवल अल्फा और संख्या शामिल होनी चाहिए।
IsAlpha - स्ट्रिंग में कम से कम 1 अल्फा होना चाहिए (भाषा में निर्दिष्ट चार्ट में) और केवल अल्फ़ा शामिल करें।
IsNumeric - स्ट्रिंग में कम से कम 1 नंबर होना चाहिए (निर्दिष्ट भाषा संख्या में) और इसमें केवल संख्याएँ शामिल होती हैं।
वांछित भाषा के लिए चार्ट / अंक सीमा निर्दिष्ट की जा सकती है। यूनिकोड रेंज नीचे लिंक पर उपलब्ध हैं:
http://www.ssec.wisc.edu/~tomw/java/unicode.html
एपीआई:
public static bool IsAlphaNumeric(this string stringToTest)
{
//English
const string charSet = "a-zA-Z";
const string numSet = @"0-9";
//Greek
//const string charSet = @"\u0388-\u03EF";
//const string numSet = @"0-9";
//Bengali
//const string charSet = @"\u0985-\u09E3";
//const string numSet = @"\u09E6-\u09EF";
//Hindi
//const string charSet = @"\u0905-\u0963";
//const string numSet = @"\u0966-\u096F";
return Regex.Match(stringToTest, @"^(?=[" + numSet + @"]*?[" + charSet + @"]+)(?=[" + charSet + @"]*?[" + numSet + @"]+)[" + charSet + numSet +@"]+$").Success;
}
public static bool IsNumeric(this string stringToTest)
{
//English
const string numSet = @"0-9";
//Hindi
//const string numSet = @"\u0966-\u096F";
return Regex.Match(stringToTest, @"^[" + numSet + @"]+$").Success;
}
public static bool IsAlpha(this string stringToTest)
{
//English
const string charSet = "a-zA-Z";
return Regex.Match(stringToTest, @"^[" + charSet + @"]+$").Success;
}
उपयोग:
//English
string test = "AASD121asf";
//Greek
//string test = "Ϡϛβ123";
//Bengali
//string test = "শর৩৮";
//Hindi
//string test = @"क़लम३७ख़";
bool isAlphaNum = test.IsAlphaNumeric();
निम्नलिखित रेगेक्स अल्फ़ान्यूमेरिक वर्णों और अंडरस्कोर से मेल खाता है:
^[a-zA-Z0-9_]+$
उदाहरण के लिए, पर्ल में:
#!/usr/bin/perl -w
my $arg1 = $ARGV[0];
# check that the string contains *only* one or more alphanumeric chars or underscores
if ($arg1 !~ /^[a-zA-Z0-9_]+$/) {
print "Failed.\n";
} else {
print "Success.\n";
}
यह ज्यादातर मामलों में काम करना चाहिए।
/^[\d]*[a-z_][a-z\d_]*$/gi
और सबसे ज्यादा मेरा मतलब है,
abcd True
abcd12 True
ab12cd True
12abcd True
1234 False
^ ... $
- पैटर्न के साथ शुरू और समाप्त होने वाले मैच[\d]*
- शून्य या अधिक अंकों का मिलान करें[a-z_]
- एक वर्णमाला या अंडरस्कोर मैच[a-z\d_]*
- एक वर्णमाला या अंक या अंडरस्कोर मैच/gi
- स्ट्रिंग और केस-असंवेदनशील में विश्व स्तर पर मेल खाता है1234
लेखक द्वारा अनुरोध भाषा से शब्द है। आपकी भाषा अधिक प्रतिबंधात्मक है।
मेरे लिए एक मुद्दा यह था कि मैं अल्फा, न्यूमेरिक और अल्फा न्यूमेरिक के बीच अंतर करना चाहता हूं, इसलिए यह सुनिश्चित करने के लिए कि अल्फ़ान्यूमेरिक स्ट्रिंग में कम से कम एक अल्फा और कम से कम एक न्यूमेरिक होता है, मैंने उपयोग किया:
^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$
यूनिकोड अल्फ़ान्यूमेरिक मिलान की तलाश करने वालों के लिए, आप कुछ ऐसा करना चाहते हैं:
^[\p{L} \p{Nd}_]+$
इसके अलावा http://unicode.org/reports/tr18/ और http://www. अनियमित-expressions.info/unicode.html पर पढ़ रहा है
मेरा मानना है कि आप अपने मैचों में लैटिन और यूनिकोड वर्ण नहीं ले रहे हैं। उदाहरण के लिए, यदि आपको "ã" या "ü" वर्ण लेने की आवश्यकता है, तो "\ w" का उपयोग काम नहीं करेगा।
आप वैकल्पिक रूप से इस दृष्टिकोण का उपयोग कर सकते हैं:
^[A-ZÀ-Ýa-zà-ý0-9_]+$
आशा है ये मदद करेगा!
पूरे स्ट्रिंग की जांच करने के लिए और खाली तारों की अनुमति न दें, प्रयास करें
^[A-Za-z0-9_]+$
यह मेरे लिए काम करता है, यह ओ 'रेली की "मास्टेरिंग रेगुलर एक्सप्रेशंस" में पाया गया:
/^\w+$/
स्पष्टीकरण:
स्वयं को सत्यापित करें:
const regex = /^\w+$/;
const str = `nut_cracker_12`;
let m;
if ((m = regex.exec(str)) !== null) {
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}