নিয়মিত প্রকাশে 'জি' পতাকাটির অর্থ কী?


110

gনিয়মিত প্রকাশে পতাকাটির অর্থ কী ?

মধ্যে পার্থক্য কি হয় /.+/gএবং /.+/?

উত্তর:


130

gবিশ্বব্যাপী অনুসন্ধানের জন্য। মানে এটি সমস্ত ঘটনার সাথে মিলবে। আপনি সাধারণত দেখতে পাবেন iযার অর্থ কেস উপেক্ষা করুন।

রেফারেন্স: গ্লোবাল - জাভাস্ক্রিপ্ট | MDN

"জি" পতাকাটি নির্দেশ করে যে নিয়মিত এক্সপ্রেশনটি স্ট্রিংয়ের সমস্ত সম্ভাব্য ম্যাচের বিপরীতে পরীক্ষা করা উচিত।

gপতাকা ব্যতীত , এটি কেবল প্রথমটির জন্য পরীক্ষা করবে।


1
সুতরাং, টেক্সট ফাংশনটি ব্যবহার করার সময় / জি পতাকাটি অপ্রাসঙ্গিক, কারণ এটি যেভাবেই প্রথম ম্যাচটি খুঁজে পায়, তাই না?
xr280xr

10
@ xr280xr অপ্রাসঙ্গিক নয়, আরও প্রতি-উত্পাদকের মতো। আপনি যদি রেজিএক্সপ্যাকটি পুনরায় ব্যবহার করেন তবে এটি জিনিসগুলি ভঙ্গ করবে। var r = /a/g; console.log(r.test('a'), r.test('a')); // true false
জানোশ


40

জাভাস্ক্রিপ্টে উদাহরণ হিসাবে ব্যাখ্যা:

> 'aaa'.match(/a/g)
[ 'a', 'a', 'a' ]

> 'aaa'.match(/a/)
[ 'a', index: 0, input: 'aaa' ]

10

g এটি বিশ্বব্যাপী অনুসন্ধান পতাকা।

বিশ্বব্যাপী অনুসন্ধান পতাকাটি স্ট্রিং জুড়ে কোনও নিদর্শনটির জন্য RegExp অনুসন্ধানকে তৈরি করে, প্রদত্ত প্যাটার্নটির সাথে মিলে যায় এমন সমস্ত উপস্থিতির একটি অ্যারে তৈরি করে।

মধ্যে পার্থক্য তাই /.+/gএবং /.+/ যে gসংস্করণ শুধুমাত্র প্রথম পরিবর্তে প্রতিটি ঘটনা পাবেন।


9

তার মাঝে কোন পার্থক্য নেই /.+/gএবং /.+/কারণ তারা উভয় শুধুমাত্র কখনও পুরো স্ট্রিং একবার ম্যাচ হবে। gযদি রেগুলার এক্সপ্রেশন একাধিকবার মেলে বা গোষ্ঠীর, যা কেস রয়েছে পারে একটি পার্থক্য তোলে .match()ম্যাচের একটি অ্যারের পরিবর্তে দলের একটি অ্যারের ফিরে আসবে।


8

@ ম্যাটিস্কা যেমন উল্লেখ করেছেন, gপতাকাটি lastIndexসম্পত্তিটিকেও সেট করে ।

এর খুব গুরুত্বপূর্ণ একটি পার্শ্ব প্রতিক্রিয়া হ'ল যদি আপনি কোনও মিলের স্ট্রিংয়ের বিপরীতে একই রেজেক্সেক্স দৃষ্টান্তটি পুনরায় ব্যবহার করছেন তবে এটি শেষ পর্যন্ত ব্যর্থ হবে কারণ এটি কেবলমাত্র অনুসন্ধান শুরু করে lastIndex

// regular regex
const regex = /foo/;

// same regex with global flag
const regexG = /foo/g;

const str = " foo foo foo ";

const test = (r) => console.log(
    r,
    r.lastIndex,
    r.test(str),
    r.lastIndex
);

// Test the normal one 4 times (success)
test(regex);
test(regex);
test(regex);
test(regex);

// Test the global one 4 times
// (3 passes and a fail)
test(regexG);
test(regexG);
test(regexG);
test(regexG);


6

gপতাকার অর্থ ইতিমধ্যে উল্লিখিত অর্থের পাশাপাশি এটি regexp.lastIndexসম্পত্তিকে প্রভাবিত করে :

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

তথ্যসূত্র: মজিলা বিকাশকারী নেটওয়ার্ক


3

নিয়মিত প্রকাশে জি একটি গ্লোবাল অনুসন্ধান সংজ্ঞায়িত করে, এর অর্থ এটি সমস্ত লাইনে সমস্ত দৃষ্টান্ত অনুসন্ধান করে।


1

স্ট্রিং উপর ভিত্তি করে উদাহরণ দেবে। আমরা যদি একটি স্ট্রিং থেকে সমস্ত উপস্থিতি সরাতে চাই। যদি আমরা "হ্যালো ওয়ার্ল্ড" থেকে "ও" "" এর সমস্ত উপস্থিতি সরাতে চাই তবে বলি

"hello world".replace(/o/g,'');

0
  1. g -> সমস্ত ম্যাচ ফেরত
  2. without g -> প্রথম ম্যাচ ফেরত

উদাহরণ:

  1. '1 2 1 5 6 7'.match(/\d+/)আয় ["1", index: 0, input: "1 2 1 5 6 7", groups: undefined]। আপনি যেমন দেখেন আমরা কেবল প্রথম ম্যাচ নিতে পারি"1"
  2. '1 2 1 5 6 7'.match(/\d+/g)সমস্ত ম্যাচের একটি অ্যারে ফেরত দেয় ["1", "2", "1", "5", "6", "7"]

1
দয়া করে আরও ব্যাখ্যা করুন - "সমস্ত ম্যাচ" এবং "প্রথম ম্যাচ" এর মধ্যে পার্থক্য কী?
নিকো হায়েস

আমি আরও ব্যাখ্যা। আপনার গাইডেন্সের জন্য ধন্যবাদ
নাগীবাবা

@ নিকোহেস আপনি কি আপনার নেতিবাচক হারটি সরাতে পারবেন? আমি আরও ব্যাখ্যামূলক হতে চেষ্টা করেছি।
নাগীবাবা

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