আমি একটি নিয়মিত ভাব প্রকাশ করতে চাই যা যদি স্ট্রিংয়ের মধ্যে কেবল উচ্চ এবং ছোট হাতের অক্ষর, সংখ্যা এবং আন্ডারস্কোর থাকে কিনা তা পরীক্ষা করে থাকে।
আমি একটি নিয়মিত ভাব প্রকাশ করতে চাই যা যদি স্ট্রিংয়ের মধ্যে কেবল উচ্চ এবং ছোট হাতের অক্ষর, সংখ্যা এবং আন্ডারস্কোর থাকে কিনা তা পরীক্ষা করে থাকে।
উত্তর:
কেবল সেই অক্ষরগুলি (বা একটি খালি স্ট্রিং) ধারণ করে এমন একটি স্ট্রিং মেলতে চেষ্টা করুন
"^[a-zA-Z0-9_]*$"
এটি নেট নিয়মিত এক্সপ্রেশন এবং সম্ভবত অন্যান্য অনেক ভাষার জন্য কাজ করে।
এটি ভেঙে দেওয়া:
^ : 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+$
) হিসাবে ব্যবহার করতে পারেন । মনে রাখবেন যে অন্যান্য ভাষায় এবং। নেট এ ডিফল্টরূপে \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# বিশেষ ), তাই আমি বলব:
^[[:alnum:]_]+$
তবে উপরের লিঙ্কগুলিতে ডকুমেন্টেশনে বলা হয়েছে যে \w
"0 - 9, A - Z এবং a - z (POSIX এর সমতুল্য [: alnum:]) এর মধ্যে কোনও অক্ষরের সাথে মিল থাকবে", আমি এটি সত্য বলে খুঁজে পাইনি have । grep -P
যাই হোক না কেন। আপনি যদি ব্যবহার করেন [:alnum:]
তবে আপনাকে স্পষ্টভাবে আন্ডারস্কোর অন্তর্ভুক্ত করতে হবে তবে আপনি যদি ব্যবহার করেন তবে তা নয় \w
। সংক্ষিপ্ত এবং মিষ্টি জন্য আপনি নিম্নলিখিতটি হারাতে পারবেন না:
^\w+$
পঠনযোগ্যতার পাশাপাশি, পসআইএক্স অক্ষর ক্লাসগুলি ব্যবহার করে ( http://www.regular-expressions.info/posixbrackets.html ) এর অর্থ হল যে আপনার রেজেক্সগুলি নন ASCII স্ট্রিংগুলিতে কাজ করতে পারে, যা নির্ভর করে রেঞ্জ ভিত্তিক রেজেক্সগুলি কাজ করবে না ASCII অক্ষরের অন্তর্নিহিত ক্রম যা অন্যান্য অক্ষর সেট থেকে পৃথক হতে পারে এবং তাই আপনাকে ক্যাপচার করতে চাইতে পারে এমন কিছু নন-এএসসিআইআই অক্ষর (যেমন œ) বাদ দেবে।
কম্পিউটার সায়েন্সে, একটি আলফানিউমেরিক্যাল মানটির অর্থ প্রায়শই প্রথম অক্ষর একটি সংখ্যা নয় তবে বর্ণমালা বা আন্ডারস্কোর হয়। এরপর চরিত্র হতে পারে 0-9
, A-Z
, a-z
, অথবা আন্ডারস্কোর ( _
)।
আপনি এটি কীভাবে করবেন তা এখানে:
পিএইচপি এর অধীনে পরীক্ষিত:
$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'
বা এই নিতে
^[A-Za-z_][A-Za-z\d_]*$
এবং এটি আপনার বিকাশের ভাষায় রাখুন।
"কমপক্ষে একটি" স্টাফ করার জন্য লুক হেড ব্যবহার করুন। বিশ্বাস করুন এটা অনেক সহজ।
এখানে একটি উদাহরণ রয়েছে যার জন্য কমপক্ষে একটি অঙ্ক এবং একটি বর্ণযুক্ত 1-10 টি অক্ষর প্রয়োজন:
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$
দ্রষ্টব্য: w \ w ব্যবহার করতে পারত তবে ECMA / ইউনিকোড বিবেচনাগুলি \ w "শব্দের চরিত্র" এর ক্যারেক্টার কভারেজ বাড়িয়ে তুলবে।
স্ট্রিংয়ের জন্য আমি এই বহু-ভাষাগত এক্সটেনশানগুলি ব্যবহার করে দেখুন।
#AlphaNumeric - স্ট্রিংয়ে অন্ততপক্ষে 1 টি আলফা থাকতে হবে (ইউনিকোড পরিসরে অক্ষর, চারসেটে উল্লিখিত) এবং ন্যূনতম 1 নম্বর (নামসেটে উল্লিখিত)। এছাড়াও, স্ট্রিংটিতে কেবলমাত্র আলফা এবং সংখ্যা থাকা উচিত।
ইসআল্ফা - স্ট্রিংয়ে কমপক্ষে 1 টি আলফা থাকতে হবে (বর্ণিত ভাষা লেখায় সেটেট করা উচিত) এবং কেবল আলফা সমন্বিত থাকতে হবে।
ইসনামারিক - স্ট্রিংয়ে কমপক্ষে 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/report/tr18/ এবং http://www.regular-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}`);
});
}