สำคัญ: ใช้( )
วงเล็บในสตริงการค้นหาของคุณ
ในขณะที่คำตอบก่อนหน้านี้ถูกต้องมีสิ่งสำคัญที่จะต้องเน้นคือ! ทั้งหมดส่วนการจับคู่ในสายการค้นหาของคุณที่คุณต้องการใช้งานของคุณในสตริงทดแทนจะต้องล้อมรอบด้วย( )
วงเล็บมิฉะนั้นกลุ่มจับคู่เหล่านี้จะไม่สามารถเข้าถึงตัวแปรที่กำหนดไว้เช่น$1
, $2
หรือ\1
, \2
ฯลฯ
ตัวอย่างเช่นเราต้องการแทนที่ 'em' ด้วย 'px' แต่เก็บค่าหลักไว้:
margin: 10em; /* Expected: margin: 10px */
margin: 2em; /* Expected: margin: 2px */
- สตริงการแทนที่:
margin: $1px
หรือmargin: \1px
- สตริงการค้นหา (แก้ไข):
margin: ([0-9]*)em
// พร้อมวงเล็บ
- ค้นหาสตริง (INCORRECT):
margin: [0-9]*em
ตัวอย่างกรณีที่ถูกต้อง:การใช้margin: ([0-9]*)em
สตริงการค้นหา (พร้อมวงเล็บ) ใส่ส่วนที่จับคู่ที่ต้องการ (เช่น$1
หรือ\1
) ด้วย( )
วงเล็บดังนี้:
- ค้นหา:
margin: ([0-9]*)em
(พร้อมวงเล็บ)
- แทนที่เป็น:
margin: $1px
หรือmargin: \1px
- ผลลัพธ์:
margin: 10px;
margin: 2px;
ตัวอย่างกรณีที่ไม่ถูกต้อง:การใช้margin: [0-9]*em
สตริงการค้นหา (ไม่มีวงเล็บ) รูปแบบ regex ต่อไปนี้จะตรงกับสายที่ต้องการ แต่ส่วนการจับคู่จะไม่สามารถใช้ได้ในสตริงแทนที่เป็นตัวแปรเช่น$1
หรือ\1
:
- ค้นหา:
margin: [0-9]*em
(ไม่มีวงเล็บ)
- แทนที่เป็น:
margin: $1px
หรือmargin: \1px
- ผลลัพธ์:
margin: px; /* `$1` is undefined */
margin: px; /* `$1` is undefined */
$0
เหรอ?