var str = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;
str.replace(regex, 1);
ที่มาแทนที่สตริงทั้งหมดที่มีstr
1
ฉันต้องการให้มันแทนที่สตริงย่อยที่ตรงกันแทนที่จะเป็นสตริงทั้งหมด เป็นไปได้ใน Javascript หรือไม่?
var str = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;
str.replace(regex, 1);
ที่มาแทนที่สตริงทั้งหมดที่มีstr
1
ฉันต้องการให้มันแทนที่สตริงย่อยที่ตรงกันแทนที่จะเป็นสตริงทั้งหมด เป็นไปได้ใน Javascript หรือไม่?
คำตอบ:
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);
ใช้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");
}
แก้ไข: การปรับเปลี่ยนเกี่ยวกับความคิดเห็น
ฉันจะได้ส่วนก่อนและหลังสิ่งที่คุณต้องการแทนที่และวางไว้ข้างใดข้างหนึ่ง
ชอบ:
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]}`;
ฉันคิดว่าวิธีที่ง่ายที่สุดในการบรรลุเป้าหมายคือ:
var str = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1${anyNumber}$3`);