জাভাস্ক্রিপ্ট রেজেক্স প্যাটার্ন ভেরিয়েবলের সাথে সংযুক্ত করে


94

ভেরিয়েবলের সাথে সম্মিলিতভাবে রেইগেক্স প্যাটার্ন কীভাবে তৈরি করবেন, এরকম কিছু:

var test ="52";
var re = new RegExp("/\b"+test+"\b/"); 
alert('51,52,53'.match(re));

ধন্যবাদ

উত্তর:


150
var re = new RegExp("/\b"+test+"\b/"); 

\bস্ট্রিংয়ে আক্ষরিক একটি ব্যাকস্পেস অক্ষর। একটি স্ট্রিং আক্ষরিক মধ্যে একটি রেজেেক্স স্থাপন করার সময় আপনার পালানোর আরও এক দফা দরকার:

var re = new RegExp("\\b"+test+"\\b"); 

( //আপনারও এই প্রসঙ্গে প্রয়োজন নেই ))


16
অনেকগুলি জায়গা রয়েছে যেখানে বিল্ট-ইন টাইপের কনস্ট্রাক্টর-ফাংশনটি উভয় সাথে বা বাইরে ব্যবহার করা যেতে পারে new। তবে অন্যান্য অবজেক্টের সাথে ধারাবাহিকতার জন্য যেখানে এটি সত্য নাও থাকতে পারে এবং সাধারণভাবে স্পষ্টতার জন্য আমি সর্বদা ব্যবহার করব new
বোবিনস

4
আরেকটি উপায় হ'ল স্বচ্ছতার জন্য একক-উদ্ধৃতি ব্যবহার করা যাতে আপনার পিছনে স্ল্যাশগুলি এড়াতে হবে না:new RegExp('\b'+test+'\b');
আইকিউআন্ড্রেয়াস

4
আপনার এখনও ব্যাকস্ল্যাশগুলি এড়াতে হবে। জাভাস্ক্রিপ্টে ডাবল কোট (এককথায়, পিএইচপি) এর বিপরীতে সিঙ্গেল কোটের আলাদা পালানোর নিয়ম নেই।
ববিনস

সীমানা-অপারেটরদের .match () এবং .replace () জেএস রেজেক্সিং ফাংশনগুলির সাহায্যে একটি পরিবর্তনশীলটিতে ব্যবহার করার চেষ্টা করার সময়ও এই উত্তরটি একই প্রশ্নটি সমাধান করে।
হোল্ডঅফহ্যাঙ্গার

শুধু আমি যা খুঁজছিলাম। অংশ সম্পর্কে When putting a regex in a string literal you need one more round of escaping; এটি সম্পর্কে কোনও পটভূমি তথ্য আছে (কারণগুলি)?
বাস পিটর্স

10

ES2015 (ওরফে ES6) এর সাহায্যে RegExp নির্মাণের সময় আপনি টেম্পলেট লিটারালগুলি ব্যবহার করতে পারেন :

let test = '53'
const regexp = new RegExp(`\\b${test}\\b`, 'gi') // showing how to pass optional flags
console.log('51, 52, 53, 54'.match(regexp))


4
টাইপো: রেজিএক্সপেক্স অবশ্যই রেজিপ্লেক্স হতে হবে
এনএফপিটার

9

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

/(^|,)52(,|$)/.test('51,52,53')

তবে আমি ব্যবহার করার পরামর্শ দিই

var list = '51,52,53';
function test2(list, test){
    return !((","+list+",").indexOf(","+test+",") === -1)
}
alert( test2(list,52) )
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.