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


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.