একটি শব্দ মেলে না জাভাস্ক্রিপ্ট নিয়মিত অভিব্যক্তি


87

নির্দিষ্ট শব্দটির সাথে মেলে না এমন স্ট্রিংটি পরীক্ষা করতে আমি কীভাবে জাভাস্ক্রিপ্টের নিয়মিত এক্সপ্রেশন ব্যবহার করব?

উদাহরণস্বরূপ, আমি একটি ফাংশন চাই যা যখন একটি স্ট্রিং পাস করে তবে এতে abcবা হয় def, মিথ্যা ফিরিয়ে দেয়।

'abcd' -> মিথ্যা

'সিডিএফ' -> মিথ্যা

'বিসিডি' -> সত্য

সম্পাদনা

অগ্রাধিকার হিসাবে, আমি নিয়মিত মতামত চাই যেমন কিছু সহজ, [^ এবিসি] এর মতো, তবে এটি ক্রমাগত চিঠিগুলির প্রয়োজন হওয়ায় এটি প্রত্যাশিত ফলাফলটি সরবরাহ করে না।

যেমন আমি চাইmyregex

if ( myregex.test('bcd') ) alert('the string does not contain abc or def');

বিবৃতি myregex.test('bcd')মূল্যায়ন করা হয় true

উত্তর:


127

এটি আপনি যা খুঁজছেন:

^((?!(abc|def)).)*$

ব্যাখ্যাটি এখানে: একটি শব্দ নেই এমন একটি লাইনের সাথে মেলে নিয়মিত প্রকাশ?


4
এটাই আমার প্রত্যাশা উত্তর! ধন্যবাদ আমার একটি ক্রিয়াকলাপের চেয়ে নিয়মিত অভিব্যক্তি দরকার। আমার প্রশ্নটি সম্পাদিত হয়েছিল এবং উত্তরগুলি আমার প্রশ্নের নতুন সংস্করণটির উত্তর দিতে এসেছিল। এই কারণেই আমি বিভ্রান্তি এড়াতে "EDIT" অংশটি ব্যবহার করেছি।
bxx

4
এমন কোনও উত্তর আছে যা পুরো শব্দের সাথে মেলে না? আপনার উদাহরণ "এবিসি", "বেবিসি" এবং "অ্যাবিসিডি" সমস্ত ব্যর্থ এবং যেখানে "এক্সওয়াইজ" পাস হয়। আমার ব্যর্থ হতে "এবিসি" দরকার তবে পাস করতে "এবিসিডি" দরকার। সরানো হচ্ছে .এবং *কাজ বলে মনে হচ্ছে না
gman

18
if (!s.match(/abc|def/g)) {
    alert("match");
}
else {
    alert("no match");
}

4
আপনি কেন আপনার রেজেক্সে বন্দী হচ্ছেন?
ফ্লিমজি

ভাল যুক্তি! আমি মনে করি আমি ভেবেছিলাম যদি আমি এটি ক্যাপচার না করি তবে এটি আব (সি | ডি) এর অর্থ হতে পারে।
পেটার ইভানভ

4
এটা তোলে হয়তো ব্যবহার করাই ভালো /abc|def/g.test(s)যে এই ক্ষেত্রে একটি বুলিয়ান আসতে;)
538ROMEO

5

এখানে একটি পরিষ্কার সমাধান:

function test(str){
    //Note: should be /(abc)|(def)/i if you want it case insensitive
    var pattern = /(abc)|(def)/;
    return !str.match(pattern);
}



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