আমি কীভাবে জাভাস্ক্রিপ্টে একটি রেজেক্স স্ট্রিং ম্যাচ প্রতিস্থাপন করতে পারি?


111
var str   = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;

str.replace(regex, 1);

এটি পুরো স্ট্রিংয়ের strসাথে প্রতিস্থাপন করে 1। আমি এটি পুরো স্ট্রিংয়ের পরিবর্তে ম্যাচযুক্ত সাবস্ট্রিংকে প্রতিস্থাপন করতে চাই। জাভাস্ক্রিপ্টে এটি কি সম্ভব?

উত্তর:


140
var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
str = str.replace(regex, "$11$2");
console.log(str);

অথবা আপনি যদি নিশ্চিত হন যে স্ট্রিংটিতে অন্য কোনও অঙ্ক থাকবে না:

var str   = 'asd-0.testing';
var regex = /\d/;
str = str.replace(regex, "1");
console.log(str);

1
বা ফাংশনটি ব্যবহার করে:'্যাসেড-0. টেস্টিং'.রপ্লেস (/ (আড্ডা -) \ ডি (\। \ ডাব্লু +) /, ফাংশন (মাইস্ট্রিং, আরজি 1, আরজি 2) {রিটার্ন আরগ 1 + 'মাইনিম্বার' + আর্গ 2})
— ইভান রেভ

1
আপনি কি রেইগেক্সের কাঠামো জানেন না এমন কোনও উত্তর আছে? এখানে আপনি মূলত দুটি ম্যাচ দিয়ে একটি নতুন রেজেক্স তৈরি করছেন
— মার্টিন মাসেরেরা

এটা জানা যে আপনার ধনুর্বন্ধনী () অংশ ইত্যাদি $ 1, $ 2 যেমন চান চারপাশের প্রয়োজন ভালো
— Bas, Slagter

57

ব্যবহার str.replace(regex, $1);:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

if (str.match(regex)) {
    str = str.replace(regex, "$1" + "1" + "$2");
}

সম্পাদনা: মন্তব্য সম্পর্কিত অভিযোজন


আমি স্ট্রিংটিকে '1' দিয়ে স্ট্রিংয়ের সাথে পুরো স্ট্রিংয়ের সাথে প্রতিস্থাপন করতে চাই
— ডেভ

24

আপনি যেটি প্রতিস্থাপন করতে চান তার আগে এবং পরে আমি এই অংশটি পেয়ে যাব এবং তাদের উভয় পাশে রেখে দেব।

ভালো লেগেছে:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

var matches = str.match(regex);

var result = matches[1] + "1" + matches[2];

// With ES6:
var result = `${matches[1]}1${matches[2]}`;

5
+1 আমি ব্যক্তিগতভাবে ম্যাচগুলি সংগ্রহ করতে পছন্দ করি।
— eduncan911

আমি সম্মত, মেলানো সেটটি পাওয়া আমার মতে আরও পঠনযোগ্য।
— ট্র্যাভিস জে

0

আমি মনে করি আপনার লক্ষ্য অর্জনের সবচেয়ে সহজ উপায় হ'ল:

var str   = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1${anyNumber}$3`);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.