নিয়মিত প্রকাশ যা কোনও প্যাটার্নের সাথে মেলে বা খালি স্ট্রিং


86

আমার নিম্নলিখিত নিয়মিত এক্সপ্রেশন রয়েছে যা একটি ইমেল ঠিকানা ফর্ম্যাটটির সাথে মেলে:

^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$

এটি জাভাস্ক্রিপ্ট ব্যবহার করে কোনও ফর্মের সাথে বৈধতার জন্য ব্যবহৃত হয়। তবে এটি একটি alচ্ছিক ক্ষেত্র। সুতরাং আমি কীভাবে কোনও ইমেল ঠিকানা ফর্ম্যাট, বা একটি খালি স্ট্রিংয়ের সাথে মেলে এই রেজেক্সটিকে পরিবর্তন করতে পারি?

আমার সীমিত রেগেক্স জ্ঞান থেকে, আমি মনে করি \bএকটি খালি স্ট্রিংয়ের সাথে মেলে, এবং এর |অর্থ "বা", সুতরাং আমি নিম্নলিখিতগুলি করার চেষ্টা করেছি, তবে এটি কার্যকর হয়নি:

^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$|\b

4
আপনার যদি অবশ্যই কোনও ইমেল যাচাই করতে হয় তবে যথাসম্ভব অনুমতিপ্রাপ্ত হন। আপনি অবাক হবেন যে হোম-বেকড রেজিজেসগুলির সাথে বাস্তব, বৈধ এবং কার্যকরী ইমেল ঠিকানাগুলি মিস করা কত সহজ। উদাহরণস্বরূপ, আপনার রেজেক্সেক্স এই বৈধ ঠিকানাগুলিতে ব্যর্থ হবে: joe_blow@foo.com, micro$oft@apple.com, রুট @ লোকালহোস্ট, সিগফ্রিড+roy@lasvegas.com।
জ্যানো


@ আন্ডার্স বাহ, খুব জটিল রেইগেক্স! আমি মনে করি আমি রেইজেক্সের জটিলতা ভুল ধারণা থেকে ফেলেছি
কার্ট

4
না, আমি মনে করি আপনি ইমেল বৈধকরণের জটিলতাটিকে ভুল ধারণা দিয়েছেন :-)
জ্যানো

উত্তর:


202

মিলতে patternবা একটি খালি স্ট্রিং ব্যবহার করুন

^$|pattern

ব্যাখ্যা

  • ^এবং $যথাক্রমে স্ট্রিং অ্যাঙ্করগুলির শুরু এবং শেষ।
  • |বিকল্প চিহ্নিত করতে ব্যবহৃত হয়, যেমন this|that

তথ্যসূত্র


চালু \b

\bবেশিরভাগ স্বাদে একটি "শব্দ সীমানা" অ্যাঙ্কর। এটি একটি শূন্য প্রস্থের ম্যাচ, অর্থাত একটি খালি স্ট্রিং, তবে এটি কেবলমাত্র একটি নির্দিষ্ট শব্দের সীমানায় খুব নির্দিষ্ট স্থানগুলিতে এই স্ট্রিংগুলির সাথে মেলে ।

এটি, \bঅবস্থিত:

  • পরপর \wএবং \W(উভয় অর্ডার) এর মধ্যে:
    • অর্থাত্ একটি শব্দের চরিত্র এবং একটি শব্দহীন অক্ষরের মধ্যে
  • এর মধ্যে ^এবং\w
    • অর্থাত্ স্ট্রিংয়ের শুরুতে এটি শুরু হয় \w
  • এর মধ্যে \wএবং$
    • অর্থাত্ স্ট্রিংয়ের শেষে যদি এটি শেষ হয় \w

তথ্যসূত্র


ই-মেইল অ্যাড্রেসগুলির সাথে মেলে রেগেক্স ব্যবহার করার সময়

নির্দিষ্টকরণের উপর নির্ভর করে এটি তুচ্ছ নয়।

সম্পর্কিত প্রশ্নাবলী


10

বিকল্পটি হ'ল আপনার ক্রেডিট-নন ক্যাপচারিংগুলি বন্ধনীতে regexp স্থাপন করা। তারপরে এই অভিব্যক্তিটি usingচ্ছিকভাবে ব্যবহার করে করুন? কোয়ালিফায়ার , যা 0 (অর্থাত খালি স্ট্রিং) বা নন-বন্দী গোষ্ঠীর 1 টি উদাহরণের সন্ধান করবে।

উদাহরণ স্বরূপ:

/(?: some regexp )?/

আপনার ক্ষেত্রে নিয়মিত প্রকাশটি এরকম কিছু দেখায়:

/^(?:[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+)?$/

না | "বা" অপারেটর প্রয়োজন!

জাভাস্ক্রিপ্ট নিয়মিত এক্সপ্রেশন সিনট্যাক্সের জন্য এখানে মজিলা ডকুমেন্টেশন রয়েছে।


8

আপনি কেন কোনও emailচ্ছিক ইমেল ঠিকানাটি বৈধ করতে চান তা আমি নিশ্চিত নই, তবে আমি আপনাকে ব্যবহারের পরামর্শ দিই

^$|^[^@\s]+@[^@\s]+$

অর্থ

^$        empty string
|         or
^         beginning of string
[^@\s]+   any character but @ or whitespace
@         
[^@\s]+
$         end of string

আপনি যাইহোক ভুয়া ইমেলগুলি থামাতে পারবেন না, এবং এইভাবে আপনি বৈধ ঠিকানাগুলি বন্ধ করবেন না।


যদি কোনও ক্ষেত্রের মধ্যে কোনও ঠিকানা প্রবেশ না করা হয়, ডাটাবেসে একটি নুল মান প্রবেশ করা হয়, সুতরাং নিউজলেটারগুলি প্রেরণ করার সময় এটি মোকাবেলা করা যেতে পারে I আমি প্রশংসা করি এটি জাল ঠিকানাগুলি থামবে না, এবং আমিও করি না Regex সঙ্গে এ সব না না সম্ভব মনে করি, কিন্তু এটা অন্তত মানুষের ত্রুটি কমান করব
কার্ট

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

কেবল একটি খালি স্ট্রিংয়ের জন্য চেক করতে চেয়েছিলেন। $ $ কাজ করেছে
সুভাষি

1

\ b শব্দের সীমানার সাথে মেলে। আমি মনে করি আপনি খালি স্ট্রিংয়ের জন্য। Use ব্যবহার করতে পারেন।

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