শুধুমাত্র বর্ণমালা অক্ষর মেলে নিয়মিত প্রকাশ


157

আমি ভাবছিলাম যে আমি যদি একটি নিয়মিত এক্সপ্রেশন পাই যা কেবল একটি বর্ণানুক্রমিক অক্ষরযুক্ত এমন একটি স্ট্রিংয়ের সাথে মেলে তবে এটি that


2
/ ^ [A-zA-Z] + $ / এর মতো কিছু কাজ করা উচিত।
জুলিয়ান গো

10
কি àএকটি বর্ণানুক্রমিক অক্ষর আপনার সংজ্ঞা অনুযায়ী? আপনি কোন ভাষা ব্যবহার করছেন?
টিম পিটজ্যাকার

2
একটি খালি স্ট্রিং ম্যাচ করা উচিত?
ysth

না, একটি খালি স্ট্রিং মিলবে না
স্টিফান হ্যারিস

একটি গুরুত্বপূর্ণ নোট: আপনি যে ভাষা বা সরঞ্জামটি জিজ্ঞাসা করছেন সেটিকে ব্যবহার করতে চাইছেন না এমন ভাষা বা সরঞ্জামকে আপনি রেফার করেন নি। পর্যাপ্ত পরিমাণে নীতিগুলি সর্বজনীনভাবে একই, বাক্য বিন্যাস সর্বত্র সমান নয়। আপনি এটি কোথায় ব্যবহার করতে চান তা উল্লেখ করা উচিত।
সার্জিওল

উত্তর:


186

আপনি এই 2 টির কোনও রূপ ব্যবহার করতে পারেন:

/^[A-Z]+$/i
/^[A-Za-z]+$/

ASCII বর্ণমালাগুলির একটি ইনপুট স্ট্রিংয়ের সাথে মেলে।

  • [A-Za-z] সমস্ত বর্ণমালা (ছোট এবং বড় হাতের উভয়) মিলবে।
  • ^এবং $নিশ্চিত করবে যে এই বর্ণমালাগুলি ছাড়া আর কিছুই মিলবে না।

কোড:

preg_match('/^[A-Z]+$/i', "abcAbc^Xyz", $m);
var_dump($m);

আউটপুট:

array(0) {
}

টেস্ট কেস ওপির মন্তব্যের জন্য যে ইনপুটটিতে 1 বা ততোধিক বর্ণমালা উপস্থিত থাকে তবেই সে মেলাতে চায় । আপনি যেমন পরীক্ষার ক্ষেত্রে দেখতে পাচ্ছেন যে ম্যাচগুলি ব্যর্থ হয়েছে কারণ সেখানে ^ইনপুট স্ট্রিং ছিল abcAbc^Xyz

দ্রষ্টব্য: দয়া করে নোট করুন যে উপরের উত্তরটি কেবল ASCII বর্ণমালার সাথে মেলে এবং ইউনিকোডের অক্ষরগুলির সাথে মেলে না। আপনি যদি ইউনিকোডের অক্ষরগুলির সাথে মিল রাখতে চান তবে ব্যবহার করুন:

/^\p{L}+$/u

এখানে, \p{L}যে কোনও ভাষা থেকে যে কোনও ধরনের চিঠি মিলছে


22
কিছু উপভাষায়, [আজ] 'জেড' এবং 'এ' এর মধ্যে উপস্থিত ASCII বিরামচিহ্নের সাথে মিলবে, বিশেষত '[', '\', ']', '^', '-' এবং '`' হিসাবে, পাশাপাশি 'এ' 'জেড' এর মাধ্যমে এবং 'এ' মাধ্যমে 'জেড'।
লি

আমি যা চেয়েছিলাম তা হল আমার স্ট্রিংটি কেবল তখনই মিলানো যায় যখন এতে বর্ণানুক্রমিক অক্ষর থাকে, যদি এটির বর্ণমালাবিহীন অক্ষর থাকে তবে এটি মেলে না।
স্টিফান হ্যারিস

7
@ লি: কিছু না তাদের সবাই. এই রেজেক্স বর্তমান অবস্থায় ভুল।
টিম পিটজ্যাকার

7
\w is shorthand for A-Za-z- না সত্যিই, \wজন্য সাধারণভাবে সংক্ষেপে হয়[a-zA-Z0-9_]
anubhava

1
ভাল পয়েন্ট @ jpmc26। আমি আমার আসল ভুলটি মুছে ফেলতে আমার উত্তর সম্পাদনা করেছি।
অনুভা

55

আপনি যদি নন-এএসসিআইআই বর্ণমালা অক্ষর অন্তর্ভুক্ত করতে চান এবং যদি আপনার রেজেক্স স্বাদটি ইউনিকোড সমর্থন করে, তবে

\A\pL+\z

সঠিক regex হবে।

কিছু রিজেক্স ইঞ্জিন এই ইউনিকোড সিনট্যাক্সকে সমর্থন করে না তবে \wবর্ণমালার শর্টহ্যান্ডকে নন-এএসসিআইআই অক্ষরগুলিও মেলাতে দেয় । সেক্ষেত্রে আপনি \wএই জাতীয় থেকে বর্ণ এবং আন্ডারস্কোরগুলি বিয়োগ করে সমস্ত বর্ণমালা পেতে পারেন :

\A[^\W\d_]+\z

\Aস্ট্রিংয়ের শুরুতে, স্ট্রিংয়ের \zশেষে ম্যাচগুলি ( ^এবং $কিছু ভাষাতে রুবির মতো লাইনগুলির শুরু / শেষের সাথেও মিলছে বা নির্দিষ্ট রেজেক্স বিকল্পগুলি সেট করা থাকলে)।


38
ইংরেজি বর্ণমালাকে একমাত্র বর্ণমালা হিসাবে বিবেচনা না করার জন্য +1
srcspider

7
+1, উপরে হিসাবে একই। ইংরাজী একমাত্র বর্ণমালা নয় এবং অনেক লোক এটিকে সঠিকভাবে প্রকাশ করার জন্য অ-এসকি অক্ষর ব্যবহার করে তাদের নাম লেখেন।
বেন বারকে

22

এটি এক বা একাধিক বর্ণানুক্রমিক অক্ষরের সাথে মিলবে:

/^[a-z]+$/

আপনি এটিকে ব্যবহার করে সংবেদনশীল করতে পারেন:

/^[a-z]+$/i

বা:

/^[a-zA-Z]+$/

এটি কেবল লাতিন অক্ষরের সাথে মিলবে।
উদ্ধৃতি ব্রো

13

রুবি এবং অন্যান্য ভাষাগুলি যা বন্ধনী এক্সপ্রেশনগুলিতে POSIX অক্ষর ক্লাস সমর্থন করে, আপনি কেবল তা করতে পারেন:

/\A[[:alpha:]]+\z/i

এটি সমস্ত ইউনিকোড বর্ণমালা ভাষায় আলফা-অক্ষরের সাথে মিলবে। সহজ কিছু.

আরও তথ্য: http://en.wikedia.org/wiki/Regular_expression#Character_class http://ruby-doc.org/core-2.0/Regexp.html


1
এবং সেই অক্ষরগুলি ছাড়া (যা নথিভুক্ত ছিল না) সমস্ত কিছু পেতে [^[:alpha]]
স্পাইল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.