রেজিেক্স খালি স্ট্রিং বা ইমেল


127

আমি এসও-তে প্রচুর রেইগেক্স ইমেল বৈধতা পেয়েছি তবে আমি কোনও খালি স্ট্রিং গ্রহণ করব না। এটি কি কেবল রেইজেক্সের মাধ্যমে সম্ভব? খালি স্ট্রিং বা ইমেলটিই গ্রহণ করছেন? আমি কেবল রেইজেক্সে এটি পেতে চাই।

উত্তর:


311

এই রেজেক্স প্যাটার্নটি খালি স্ট্রিংয়ের সাথে মিলবে:

^$

এবং এটি কোনও ইমেল বা একটি খালি স্ট্রিংয়ের সাথে (অসভ্যভাবে) মিলবে:

(^$|^.*@.*\..*$)

1
কিছু বিবেচনা করার জন্য, doing (|। * @। * \ .. *) doing করার কিছুটা ফাঁকা বা এটি কেবল একবার id এবং using একবার ব্যবহার করে একবার ব্যবহার করার সাথে একইভাবে ব্যবহার করা উচিত, এটি কিছুটা পরিপাটি করার জন্য।
রুনাভাল্ট

1
এটি বেশ পুরানো, তবে আমি কেবল এটি পেরেছি এবং উত্তরটি নিয়ে সমস্যায় পড়েছি trouble এমন কিছু ক্ষেত্রে রয়েছে যেখানে স্ট্রিংয়ের শুরুটি গোপন থাকে তবে এখনও এটির সাথে মিলে যায় ^, যেখানে কার্যকরভাবে আপনি কোনও ইমেলের সন্ধান করছেন বা স্ট্রিংয়ের মাঝখানে কিছুই নেই। এটির (email_regex)?জন্য আরও উপযুক্ত।
jclancy

RegEx এটি করার জন্য ব্যবহার করার চেষ্টা করার আগে ইমেলের বৈধতা কতটা জটিল তা জানতে পারা নিশ্চিত করুন। stackoverflow.com/questions/201323/…
ব্রায়ান কেনেডি

এটি নীচের ইমেলের সাথে মিলবে টেস্ট.টেষ্ট.টেষ্ট। এইটি আরও ভাল বলে আমি মনে করি ^ $ | ^ [^ \ s @] + @ [^ \ s @] + \। [^ \ S @] + $ যেহেতু এটি টেস্ট @স্টেস্টের মত ইমেলগুলি গ্রহণ করবে
dont_trust_me

একটি নির্দিষ্ট জাভা অ্যাপ্লিকেশনটিতে, এটি ^$কাজ করে না তবে এটি ^(?!.)করে: [ ^স্ট্রিংয়ের শুরু, (?!)নেতিবাচক চেহারা, .কোনও চরিত্র
লাইনফিড

8

খালি স্ট্রিং বা ইমেলের সাথে মেলে

(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)

খালি স্ট্রিং বা ইমেলের সাথে মিলে যায় তবে কোনও পরিমাণ সাদা জায়গা matching

(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)

ইমেলটির সাথে মিলে যাওয়া রেজেক্স নিজেই আরও দেখুন:

http://www.regular-expressions.info/email.html


2

উপরের উত্তরগুলি (খালি জন্য) কাজ করে, তবে আমি এটি চেষ্টা করেছি এবং এটি খালি ছেড়ে দেওয়ার মতো কাজ করে:

/\A(INTENSE_EMAIL_REGEX|)\z/i

বিপরীত ক্রমে একই জিনিস

/\A(|INTENSE_EMAIL_REGEX)\z/i

0

একটি রেগেক্সের সাথে কোনও ইমেলের সাথে মেলে না। এটি অত্যন্ত কুরুচিপূর্ণ এবং দীর্ঘ এবং জটিল এবং আপনার রেজেক্স পার্সার সম্ভবত এটি কোনওভাবেই পরিচালনা করতে পারবেন না। এগুলির সাথে মিলে যাওয়ার জন্য একটি লাইব্রেরির রুটিন সন্ধান করার চেষ্টা করুন। আপনি যদি কেবল কোনও ইমেল ঠিকানার সাথে মিলের ব্যবহারিক সমস্যাটি সমাধান করতে চান (এটি হ'ল যদি আপনি (সাধারণত) কাজের সাথে ঘটে এমন ভুল কোড চান তবে) জমা দেওয়া অন্য যে কোনও ব্যক্তির নিয়মিত-এক্সপ্রেসন.ইন.ফো ব্যবহার করুন।

খালি স্ট্রিংয়ের জন্য, ^$একাধিক ব্যক্তি উল্লেখ করেছেন এবং এটি দুর্দান্ত কাজ করবে।


13
কুৎসিত রেজেক্স আসলে রিজেক্স পার্সারদের দ্বারা পরিচালিত হতে পারে। একটি কৃপণতা নিরীহ কারণ শুধুমাত্র একটি রেজেক্স ব্যবহার না।
পিটার

এটি গঠনমূলক নয়। RegEx চেষ্টা করে পরীক্ষা করা হয় (এবং কুশ্রী থেকে দূরে - আপনি কি বলবেন যে এটি কীভাবে কাজ করে তা বেশ মার্জিত?)। অস্পষ্টভাবে কোনও সম্ভাব্য সমাধান সম্পর্কে কোনও গাইডেন্স ছাড়াই একটি লাইব্রেরির পরামর্শ দেওয়া মোটামুটি সাড়া দেওয়ার উদ্দেশ্যকে পরাস্ত করে। প্রত্যেককে বুকমার্ক করতে হবে: কোড. tutsplus.com/tutorials/…
পিমব্রউবার্স

রেজেক্সসগুলি পড়তে, রক্ষণাবেক্ষণ করতে এবং ডিবাগ করা কুখ্যাত, যা তাদের লাইব্রেরিতে কল করে প্রতিস্থাপনের জন্য প্রধান প্রার্থী করে তোলে।
সুপরিচিত

2
রেকর্ডের জন্য: আমি যদি ওপি কোন ভাষা ব্যবহার করে তা জানতাম তবে আমি আনন্দের সাথে একটি নির্দিষ্ট গ্রন্থাগারের সুপারিশ করতাম। যেহেতু এটি ভাষা-অজ্ঞাত প্রশ্ন, তাই আমার বিকল্পগুলি সীমাবদ্ধ।
কেভিন

2
রেজেক্স সুন্দর হওয়ার কথা নয় । এই যুক্তি অনুসারে, কারও কখনও রেগেজ ব্যবহার করা উচিত নয়। আপনি যদি কোনও লাইব্রেরি প্রতিস্থাপনের বিষয়ে এতটা অনড় থাকেন তবে আপনি কি মনে করেন যে পাঠাগারটি এটি করতে চলেছে? এটি হয় খুব দীর্ঘ, জটিল কোড পেতে চলেছে, বা এটি রেইজেক্স ব্যবহার করবে ... সেই সময় আপনি সম্ভবত নিজের "লাইব্রেরি" প্রয়োগ করতে পারেন। এবং আজকাল, কেউ যদি রেগেক্স কীভাবে ব্যবহার করতে হয় তা না জানেন তবে তাদের সম্ভবত কোনওভাবেই ইমেল ঠিকানাগুলি বৈধকরণের কাজ দেওয়া উচিত নয় ...
অ্যান্ড্রু


0

আমি /^\s+$|^$/giখালি এবং ফাঁকা জায়গাগুলি মেলা পছন্দ করি ।

console.log("  ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));


3
আপনি যদি ^ \ s * use ব্যবহার করেন তবে আপনার কেস বা কেস লাগবে না। এছাড়াও জি বা আই মডিফায়ারগুলির প্রয়োজন নেই কারণ এটি পুরো লাইনের সাথে মেলে এবং কোনও অক্ষরের ক্ষেত্রে জড়িত না।
কাদু

0

যদি আপনি এটি রেলের মধ্যে ব্যবহার করে থাকেন - অ্যাক্টিভরেকর্ড বৈধতা আপনি সেট করতে পারেন allow_blank: true

হিসাবে:

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