জাভাস্ক্রিপ্ট - স্ট্রিং ম্যাচে ভেরিয়েবল ব্যবহার করুন


90

আমি বেশ কয়েকটি অনুরূপ প্রশ্ন পেয়েছি, তবে এটি আমার কোনও কাজে লাগেনি। সুতরাং আমি এই সমস্যা:

var xxx = "victoria";
var yyy = "i";
alert(xxx.match(yyy/g).length);

ম্যাচ কমান্ডে ভেরিয়েবল কীভাবে পাস করবেন আমি জানি না। সাহায্য করুন. ধন্যবাদ.



আরও একটি জিনিস: আপনি যদি একটি রেজিপেক্স নির্মাণের জন্য কোনও ভেরিয়েবল ব্যবহার করছেন তবে যত্ন নেওয়া উচিত যে ভেরিয়েবলটিতে রিজেক্সএক্স বিশেষ অক্ষর থাকতে পারে। যেমন যদি আপনি পাস "C ++", Regex কম্পাইলার অভিযোগ করবেSyntaxError: Invalid regular expression: /c++/: Nothing to repeat
dotslashlu

উত্তর:


188

যদিও ম্যাচ ফাংশন স্ট্রিং লিটারেলগুলিকে রেজেক্স প্যাটার্ন হিসাবে গ্রহণ করে না, আপনি RegExp অবজেক্টের কনস্ট্রাক্টর ব্যবহার করতে পারেন এবং স্ট্রিং.ম্যাচ ফাংশনে এটি পাস করতে পারেন:

var re = new RegExp(yyy, 'g');
xxx.match(re);

আপনার প্রয়োজনীয় কোনও পতাকা (যেমন / জি) দ্বিতীয় প্যারামিটারে যেতে পারে।


4
+1, এটি পছন্দসই উপায়, বিটিডাব্লু, matchপদ্ধতিতে পাস হওয়া আর্গুমেন্টটি যদি কোনও RegExpঅবজেক্ট না হয় তবে অভ্যন্তরীণভাবে RegExpকনস্ট্রাক্টর সেই মানটি ব্যবহার করে অনুরোধ করা হবে, সুতরাং আপনি একটি স্ট্রিং প্যাটার্ন ব্যবহার করতে পারেন , উদাহরণস্বরূপ:"a123".match("\\d+")[0] === "123";
খ্রিস্টান সি সালভাদে

10

আপনার প্যাটার্নটি স্ট্রিং হলে আপনাকে RegExp অবজেক্টটি ব্যবহার করতে হবে

var xxx = "victoria";
var yyy = "i";
var rgxp = new RegExp(yyy, "g");
alert(xxx.match(rgxp).length);

যদি প্যাটার্নটি গতিশীল স্ট্রিং না হয়:

var xxx = "victoria";
var yyy = /i/g;
alert(xxx.match(yyy).length);

4
আপনি এমডিএন এর পরিবর্তে ডাব্লু 3 স্কুল ব্যবহারের জন্য একটি কাল্পনিক ডাউনওট পান! বিকাশকারী.মোজিলা.আর.ইন
ডকস / ওয়েব /

9

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

let myString = "Hello World"
let myMatch = myString.match(/H.*/)
console.log(myMatch)

বা

let myString = "Hello World"
let myVariable = "H"
let myReg = new RegExp(myVariable + ".*")
let myMatch = myString.match(myReg)
console.log(myMatch)

6

উদাহরণ। স্ট্রিংয়ের মধ্যে স্বর সংখ্যা খুঁজে পেতে

var word='Web Development Tutorial';
var vowels='[aeiou]'; 
var re = new RegExp(vowels, 'gi');
var arr = word.match(re);
document.write(arr.length);

0

আমার জন্য যাইহোক, এটি এটি ব্যবহৃত দেখতে সহায়তা করে। সবেমাত্র "পুনরায়" উদাহরণ ব্যবহার করে এটি তৈরি করেছেন:

var analyte_data = 'sample-'+sample_id;
var storage_keys = $.jStorage.index();
var re = new RegExp( analyte_data,'g');  
for(i=0;i<storage_keys.length;i++) { 
    if(storage_keys[i].match(re)) {
        console.log(storage_keys[i]);
        var partnum = storage_keys[i].split('-')[2];
    }
}

-4
xxx.match(yyy, 'g').length

4
এটি কেবল ফায়ারফক্সে কাজ করবে , এবং এটি দলিলও নয়। স্পেসিফিকেশন বলে যে String.prototype.matchপদ্ধতিটি কেবল একটি যুক্তি প্রত্যাশা করে । RegExpকনস্ট্রাক্টর ব্যবহার করা , যেমন @ ক্রিস পরামর্শ দেয় পছন্দসই উপায়।
খ্রিস্টান সি সালভাডা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.