কোনও স্ট্রিং জেএসে একটি রেজিڪسের সাথে মেলে কিনা তা পরীক্ষা করুন


750

আমি স্ট্রিংটি রেজেক্সের সাথে মেলে কিনা তা পরীক্ষা করতে কিছু ক্লায়েন্ট-সাইড বৈধকরণ করতে জাভাস্ক্রিপ্ট (jQuery এর সাথে থাকতে পারে) ব্যবহার করতে চাই:

^([a-z0-9]{5,})$

আদর্শভাবে এটি এমন একটি অভিব্যক্তি হবে যা সত্য বা মিথ্যা প্রত্যাবর্তন করেছিল।

আমি একটি জাভাস্ক্রিপ্ট নবাগত, match()আমার যা প্রয়োজন তা কি করে ? এটি একটি স্ট্রিংয়ের অংশটি পুরোপুরি নয়, একটি রেজেক্সের সাথে মেলে কিনা তা যাচাই করে দেখা যাচ্ছে।


আপনি কি একটি সম্পূর্ণ মিল চান, বা স্ট্রিংটিতে একটি ম্যাচিং স্ট্রিং রয়েছে কিনা ?
কেরেক এসবি

1
একটি সম্পূর্ণ মিল - কোনও মিলের সাবস্ট্রিং নয়।
রিচার্ড

উত্তর:


1194

আপনার regex.test()সমস্ত কিছু যদি বুলিয়ান ফলাফল হয় তবে তা ব্যবহার করুন :

console.log(/^([a-z0-9]{5,})$/.test('abc1')); // false

console.log(/^([a-z0-9]{5,})$/.test('abc12')); // true

console.log(/^([a-z0-9]{5,})$/.test('abc123')); // true

... এবং আপনি ()আপনার রেজিপেক্স থেকে অপসারণ করতে পারেন যেহেতু আপনার ক্যাপচারের প্রয়োজন নেই।


1
প্রারম্ভিক-প্রাথমিক কী সেখানে আছে?
পেড্রোড

8
@ পেড্রোড এর সূচনা বোঝা বা শুরু করে
নাগারাজু

সুতরাং আপনি বিপরীতে কিভাবে করবেন? "দিয়ে শুরু হয় না ..."
পেড্রোড


3
@ স্ট্যাকডেভ আপনি সম্ভবত জাভাস্ক্রিপ্টের চেয়ে জাভা নিয়ে কাজ করছেন?
sfarbota

176

test()পদ্ধতি ব্যবহার করুন :

var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
    console.log("Valid");
} else {
    console.log("Invalid");
}

3
নোট করুন যে সংস্করণটি সাথে RegExpরেੇগেক্স স্ট্রিংয়ে পরিবর্তনশীল মানগুলি ইনজেক্ট করতে দেয়।
ক্রিস্টোফ রাউসি

2
new RegExp("^([a-z0-9]{5,})$")এটিকে কাজ করার জন্য ডাবল উদ্ধৃতিগুলি সরিয়ে ফেলতে হয়েছিল
ফ্যাসুন্দো কলম্বিয়ার

98

আপনি match()পাশাপাশি ব্যবহার করতে পারেন :

if (str.match(/^([a-z0-9]{5,})$/)) {
    alert("match!");
}

কিন্তু test()দ্রুত আপনি পড়তে পারেন হিসাবে মনে করা হয় এখানে

তার মধ্যে গুরুত্বপূর্ণ পার্থক্য match()এবং test():

match()শুধুমাত্র স্ট্রিং দিয়ে কাজ করে, তবে test()পূর্ণসংখ্যার সাথেও কাজ করে।

12345.match(/^([a-z0-9]{5,})$/); // ERROR
/^([a-z0-9]{5,})$/.test(12345);  // true
/^([a-z0-9]{5,})$/.test(null);   // false

// Better watch out for undefined values
/^([a-z0-9]{5,})$/.test(undefined); // true

এটি একটি সংখ্যার সাথে কাজ করার কারণ হ'ল সংখ্যাটি একটি স্ট্রিংয়ে জোর করা হয়, কারণ এটি যখন স্ট্রিংয়ের প্রত্যাশা করে তখন এটি পরামিতি হিসাবে দেওয়া হয়। আমি এই আচরণের উপর নির্ভর করব না। এটি আপনার পরিবেশের পরীক্ষার প্রয়োগের উপর নির্ভর করে ()। (ম্যাচ ব্যর্থ হওয়ায় সংখ্যার matchসদস্য নেই)। আমি যদি আপনার রেজেক্স ( String(123)উদাহরণস্বরূপ) দিয়ে এটি ব্যবহার করতে চান তবে আমি স্পষ্টভাবে আপনার নম্বরটিকে স্ট্রিংয়ে রূপান্তরিত করব rec
ব্রোঞ্জড্রাগন

ম্যাচটি এখানে ব্যবহার করা যেতে পারে, তবে আপনি যদি পারফরম্যান্সের দিকে তাকান, testআমরা কেবলমাত্র রেজেক্সের সাথে মেলে একটি স্ট্রিংকে বৈধতা দিতে চাই এবং এটি থেকে সাবস্ট্রিংগুলি বের না করে 30% আরও ভাল পারফর্ম করি।
আকানশ

@ পিপ্রোটুল হ্যাঁ, তবে ম্যাচের বর্ণনার আগে এটি উল্লেখ করা উচিত।
আকানশ

টেস্ট এবং ম্যাচ (এবং ম্যাচএল) এর মধ্যে সর্বাধিক উল্লেখযোগ্য পার্থক্য হ'ল ম্যাচটি জিনিসগুলি সমস্ত মিলে যাওয়া সাব-স্ট্রিংগুলির একটি তালিকা ফেরত দিতে পছন্দ করে, অন্যদিকে পরীক্ষা কেবল পরীক্ষা করে থাকে কিনা। মধ্যে Regex পদ্ধতি পরীক্ষা করে দেখুন javascript.info/regexp-methods
জুয়ান Lanús

50

/youregexp/.test(yourString)আপনার স্ট্রিংটি রেজিপক্সের সাথে মেলে কিনা তা জানতে চাইলে ব্যবহার করুন Use


8

এখানে এমন একটি উদাহরণ রয়েছে যা নির্দিষ্ট এইচটিএমএল ট্যাগগুলির সন্ধান করে তাই এটি পরিষ্কার যে /someregex/.test()একটি বুলিয়ান দেয়:

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');

6
 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 let regexp = /[a-d]/gi;
 console.log(str.match(regexp));

2

আপনি এটি চেষ্টা করতে পারেন, এটি আমার পক্ষে কাজ করে।

 <input type="text"  onchange="CheckValidAmount(this.value)" name="amount" required>

 <script type="text/javascript">
    function CheckValidAmount(amount) {          
       var a = /^(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$/;
       if(amount.match(a)){
           alert("matches");
       }else{
        alert("does not match"); 
       }
    }
</script>


1

চেষ্টা

 /^[a-z\d]{5,}$/.test(str)


2
এই কোড-উত্তর উত্তরটি পৃষ্ঠাতে কী নতুন মান আনবে?
মিকম্যাকুসা

বর্তমানে এটি সবচেয়ে সংক্ষিপ্ত সমাধান (
রিজ এক্সপক্স

1
শেভ করা হচ্ছে 1 বছর পূর্বে পোস্ট করা নিদর্শনগুলির বাইরে অক্ষর। হাই তোলা।
মিকম্যাকুসা

2
শুধু রাষ্ট্র আগের উত্তর অধীনে একটি মন্তব্য 0-9পথে নেমে aaaaaaaaaaaaaaaaaaaaall কমে যাবে \d। ওহ, এবং এটি একটি ক্যাপচার গ্রুপ দরকার নেই।
মিকম্যাকুসা

1

আমি এক্সিকিউট পদ্ধতিটি ব্যবহার করার সুপারিশ করব যা কোনও মিল না থাকলে নাল ফেরায় অন্যথায় এটি কোনও সহায়ক অবজেক্ট দেয়।

let case1 = /^([a-z0-9]{5,})$/.exec("abc1");
console.log(case1); //null

let case2 = /^([a-z0-9]{5,})$/.exec("pass3434");
console.log(case2); // ['pass3434', 'pass3434', index:0, input:'pass3434', groups: undefined]

0
const regExpStr = "^([a-z0-9]{5,})$"
const result = new RegExp(regExpStr, 'g').test("Your string") // here I have used 'g' which means global search
console.log(result) // true if it matched, false if it doesn't
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.