เป็นไปได้ไหมที่จะเปลี่ยน
Hello, this is Mike (example)
ถึง
Hello, this is Mike
ใช้ JavaScript กับ Regex?
เป็นไปได้ไหมที่จะเปลี่ยน
Hello, this is Mike (example)
ถึง
Hello, this is Mike
ใช้ JavaScript กับ Regex?
คำตอบ:
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");
ผลลัพธ์:
"Hello, this is Mike"
(example)
เท่านั้น
var str = "Hello, this is Mike (example)";
alert(str.replace(/\s*\(.*?\)\s*/g, ''));
นอกจากนี้ยังจะแทนที่ช่องว่างส่วนเกินก่อนและหลังวงเล็บ
ลอง / \([\s\S]*?\)/g
ที่ไหน
(ช่องว่าง) ตรงกับอักขระ
(ช่องว่าง) ตามตัวอักษร
\(
ตรงกับอักขระอย่าง(
แท้จริง
[\s\S]
จับคู่อักขระใด ๆ ( \s
จับคู่อักขระช่องว่างใด ๆ และ\S
ตรงกับอักขระที่ไม่ใช่ช่องว่างใด ๆ )
*?
การแข่งขันระหว่างศูนย์และไม่ จำกัด ครั้ง
\)
ตรงกับอักขระอย่าง)
แท้จริง
g
ตรงกับทั่วโลก
ตัวอย่างรหัส:
var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);
.as-console-wrapper {top: 0}
ฉันพบว่าเวอร์ชันนี้เหมาะสมที่สุดสำหรับทุกกรณี ไม่ได้ลบช่องว่างทั้งหมด
ตัวอย่างเช่น "a (test) b" -> "a b"
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim();
"Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();
trim
ไม่ได้รับการสนับสนุนในระดับสากล: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…อย่างน้อยมันก็ไม่ใช่ในปี 2015 ... ในปี 2017 มันดูดีขึ้นมาก
หากคุณต้องการลบข้อความในวงเล็บที่ซ้อนกันให้ทำดังนี้
var prevStr;
do {
prevStr = str;
str = str.replace(/\([^\)\(]*\)/, "");
} while (prevStr != str);