অক্ষর, সংখ্যা এবং - _ এর জন্য নিয়মিত প্রকাশ


106

নীচের সংমিশ্রণের মধ্যে যদি কোনও মান হয় তবে আমাকে পিএইচপি চেক করতে সমস্যা হচ্ছে

  • অক্ষর (উপরের বা ছোট হাতের)
  • সংখ্যা (0-9)
  • আন্ডারস্কোর (_)
  • ড্যাশ (-)
  • বিন্দু (।)
  • কোন স্পেস! বা অন্যান্য অক্ষর

কয়েকটি উদাহরণ:

  • ঠিক আছে: "screen123.css"
  • ঠিক আছে: "স্ক্রিন-নতুন-file.css"
  • ঠিক আছে: "screen_new.js"
  • ঠিক নেই: "স্ক্রিনে নতুন ফাইল। CSS"

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


^ [\ w .-] * $ -> এটি সমস্ত ফাইলের নাম পাবে।
বদ্রি জিএস

উত্তর:


216

আপনি যে প্যাটার্নটি চান তা হ'ল এটি ( রুবারার.কম এ দেখুন ):

^[a-zA-Z0-9_.-]*$

ব্যাখ্যা:

  • ^ লাইন অ্যাঙ্কারের শুরু
  • $ লাইন অ্যাঙ্কারের শেষ
  • [...] একটি চরিত্র শ্রেণি সংজ্ঞা
  • * "শূন্য-বা-আরও" পুনরাবৃত্তি

লক্ষ করুন যে আক্ষরিক ড্যাশ -অক্ষর শ্রেণীর সংজ্ঞায়নের সর্বশেষ অক্ষর, অন্যথায় এর আলাদা অর্থ রয়েছে (অর্থাত্ সীমার)। .এছাড়াও একটি ভিন্ন অর্থ বাহিরে চরিত্র শ্রেণী সংজ্ঞা আছে, কিন্তু ভিতরে, এটা শুধু একটা আক্ষরিক এর.

তথ্যসূত্র


পিএইচপি-তে

আপনি কীভাবে এই প্যাটার্নটি ব্যবহার করতে পারেন তা দেখানোর জন্য এখানে একটি স্নিপেট রয়েছে:

<?php

$arr = array(
  'screen123.css',
  'screen-new-file.css',
  'screen_new.js',
  'screen new file.css'
);

foreach ($arr as $s) {
  if (preg_match('/^[\w.-]*$/', $s)) {
    print "$s is a match\n";
  } else {
    print "$s is NO match!!!\n";
  };
}

?>

উপরের প্রিন্টগুলি ( যেমন আদর্শ আইটেম ডটকম-এ দেখা গেছে ):

screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!

মনে রাখবেন \wপরিবর্তে ব্যবহার করে প্যাটার্নটি কিছুটা আলাদা । এটি "শব্দ অক্ষর" এর জন্য অক্ষর শ্রেণি।

এপিআই রেফারেন্স


স্পেসিফিকেশন নোট

এটি আপনার স্পেসিফিকেশন অনুসরণ করে বলে মনে হচ্ছে তবে নোট করুন যে এটির মতো অন্যান্য বিষয়ের সাথে মিলবে .....যা আপনার ইচ্ছা মতো বা নাও হতে পারে। আপনি কোন প্যাটার্নটি মেলতে চান তা যদি আপনি আরও নির্দিষ্ট করে বলতে পারেন তবে রেজেক্স আরও জটিল হবে।

উপরের রেজেক্সটি খালি স্ট্রিংয়ের সাথেও মেলে। আপনার যদি কমপক্ষে একটি চরিত্রের প্রয়োজন হয় তবে পুনরাবৃত্তির জন্য (শূন্য বা +আরও বেশি) পরিবর্তে (এক *বা একাধিক) ব্যবহার করুন।

যাই হোক না কেন, আপনি নিজের স্পেসিফিকেশনটি আরও স্পষ্ট করতে পারেন (রেগেক্স প্রশ্ন জিজ্ঞাসা করার সময় সর্বদা সহায়তা করে) তবে আশা করি আপনি উপরের তথ্য প্রদত্ত প্যাটার্নটি কীভাবে লিখবেন তাও শিখতে পারবেন।


আপনি চাইলে আরও বেশি হতে পারে এমন একটি আলাদা স্পেসিফিকেশনের জন্যও আইডোনে.com/5 ডিএমসিএ দেখুন । আপনি আমার সাথে স্পেসিফিকেশন বিকাশ করতে চাইলে রুবারে আমার সাথে পিছনে পিছনে যান।
polygenelubricants

আমি টর্নেডো ব্যবহার করছি এবং এইচটিএমএল নামগুলি ক্যাপচার করা দরকার, তাই আপনার উত্তরটির ভিত্তিতে আমি এটি ব্যবহার করেছি; ^/([a-zA-Z0-9._-]*\.html)$
নিউক্লিয়ারপিওন

আমি আরেকটি নিয়ম যুক্ত করব যা হ'ল: শেষ চরিত্রটি বর্ণমালা হওয়া উচিত। আপডেট করা রেজেক্স:/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+){2,}[a-zA-Z0-9^]$/
কনস্টা গর্গান

গো (গোলং) ব্যবহারকারীগণ, শীর্ষস্থানীয়, প্যাটার্নের ফলে falseখালি কাঁচা স্ট্রিং লিটারেলের ফলাফল আসবে । খেলার মাঠনীচে @ ননোপোলারিটির সমাধানটি ব্যবহার করুন ।
বেন্টকোডার

16

তুমি ব্যবহার করতে পার

^[\w\d_.-]+$

+নিশ্চিত করুন যে এটি অন্তত 1 টি অক্ষর রয়েছে করা হয়। শুরু এবং শেষ বোঝাতে ^এবং দরকার $, অন্যথায় যদি স্ট্রিংটির মাঝখানে কোনও মিল থাকে, @@@@xyz%%%%তবে এরপরে এটি এখনও একটি ম্যাচ।


4
-কোনও ব্যাপ্তি সংজ্ঞা না দেওয়ার জন্য প্রথমে সেটটিতে রাখুন । এবং \wবর্ণচিহ্নগুলি এবং আন্ডারস্কোরকে কভার করে। সুতরাং আপনার প্রয়োজন [\w.-]+
রিচার্ড

ধন্যবাদ, এটি আমার পক্ষে ভাল কাজ করে: ^ [\ w \ d _.-] + \। (Csv | CSV) $
ধর্ম মালি

এটি গো-এর (গোলং) খালি কাঁচা স্ট্রিং লিটারালগুলির সাথেও মেনে চলে যদিও গৃহীত উত্তরগুলি ਗੋ ব্যবহারকারীরা এই সমাধানটির সাথে আটকে থাকেন না। খেলার মাঠ
বেন্টকোডার

8

আপনার নিয়মাবলী অনুসারে আপনার প্যাটার্ন, অর্থাৎ বৈধ ফাইলের নামগুলি coverাকতে আমার মনে হয় আপনার আরও কিছু প্রয়োজন। নোট করুন এটি কোনও সিস্টেমের দৃষ্টিকোণ থেকে আইনী ফাইলের নামের সাথে মেলে না । এটি সিস্টেম নির্ভর এবং এটি যে গ্রহণ করবে তাতে আরও উদার হবে। এটি আপনার গ্রহণযোগ্য নিদর্শনগুলির সাথে মেলে উদ্দেশ্য।

^([a-zA-Z0-9]+[_-])*[a-zA-Z0-9]+\.[a-zA-Z0-9]+$

ব্যাখ্যা:

  • ^একটি স্ট্রিংয়ের সূচনা ম্যাচ করুন। এটি (প্লাস শেষ ম্যাচ) স্ট্রিংটিকে নির্ভুল অভিব্যক্তির সাথে সামঞ্জস্য করতে বাধ্য করে, কেবলমাত্র প্রকাশের সাথে মিলে এমন একটি স্ট্রিং থাকে না।
  • ([a-zA-Z0-9]+[_-])*শূন্য বা এক বা একাধিক অক্ষর বা সংখ্যার পরে একটি আন্ডারস্কোর বা ড্যাশ সংঘটন। এর ফলে ড্যাশ বা আন্ডারস্কোরযুক্ত সমস্ত নামগুলির মধ্যে চিঠি বা সংখ্যা রয়েছে।
  • [a-zA-Z0-9]+এক বা একাধিক অক্ষর বা সংখ্যা। এটি এমন সমস্ত নামকে কভার করে যা কোনও আন্ডারস্কোর বা ড্যাশ ধারণ করে না।
  • \.একটি আক্ষরিক সময়কাল (বিন্দু)। ফাইলের নামটি একটি এক্সটেনশান করতে বাধ্য করে এবং বাকী প্যাটার্নটি বাদ দিয়ে কেবল সময়টিকে নাম এবং এক্সটেনশানের মধ্যে ব্যবহার করার অনুমতি দেয়। আপনি যদি ড্যাশ / আন্ডারস্কোর হিসাবে একই কৌশলটি ব্যবহার করে পরিচালনা করতে পারেন তবে একাধিক এক্সটেনশানটি চাইলে কেবল শেষে।
  • [a-zA-Z0-9]+এক বা একাধিক অক্ষর বা সংখ্যা। এক্সটেনশানটি কমপক্ষে একটি অক্ষর দীর্ঘ হতে হবে এবং কেবলমাত্র অক্ষর এবং সংখ্যা থাকতে হবে। এটি সাধারণ, তবে আপনি যদি আন্ডারস্কোরগুলি অনুমতি দিতে চান তবে এটিও সম্বোধন করা যেতে পারে। আপনি যদি {2,3}একাধিক +ম্যাচারের পরিবর্তে দৈর্ঘ্যের ব্যাপ্তি সরবরাহ করতে পারেন তবে যদি এটি আরও উপযুক্ত হয়।
  • $স্ট্রিং এর শেষে ম্যাচ করুন। শুরুর চরিত্রটি দেখুন।

7

আপনি যে প্যাটার্নটি সন্ধান করছেন এটি এটি

/^[\w-_.]*$/

কি এই মানে:

  • ^ স্ট্রিং শুরু
  • [...] ভিতরে অক্ষর মেলে
  • \w কোনও শব্দের চরিত্র তাই 0-9 a-z A-Z
  • -_.ম্যাচ -এবং _এবং.
  • * শূন্য বা আরও বেশি প্যাটার্ন বা সীমাহীন
  • $ স্ট্রিংয়ের সমাপ্তি

আপনি যদি অক্ষরের পরিমাণ সীমাবদ্ধ করতে চান:

/^[\w-_.]{0,5}$/

{0,5}মানে 0-5চরিত্রগুলি


Var একটি = / ^ \ W * $ / ছ a.test ( "46545") এবং ফলাফলের মিথ্যা
দীপক

4
\wএতে অন্তর্ভুক্ত লক্ষ্য করুন_
গ্যালাক্সি

4

এর মতো কিছু কাজ করা উচিত

$code = "screen new file.css";
if (!preg_match("/^[-_a-zA-Z0-9.]+$/", $code))
{
    echo "not valid";
}

এটি "বৈধ নয়" প্রতিধ্বনিত হবে


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