[บทเรียน]ปัญหา Perl ใน RegExp บน JavaScript ไม่ทำงาน



อิงจาก W3C SCHOOLS RegExp เขียนได้ 2 รูปแบบคือ
  1. var patt=new RegExp(pattern,modifiers);
  2. var patt=/pattern/modifiers;
ส่วนใหญ่ผมมักจะเขียนแบบที่สองมากว่า เพราะมัน เขียนได้ไวกว่า(มั้ง)

แต่วันนี้เกิดอยากลองไปใช้แบบแรก
ตัวอย่าง
var patt1=new RegExp("test(\d+)", "i")
var ptest=patt1.test("test1234")
console.log(ptest) // Return false

ถ้าอยู่ในรูปแบบที่สองก็จะเป็น
var patt1=/test(\d+)/i
var ptest=patt1.test("test1234")
console.log(ptest) // Return true

เห้ย O.o ไหงแบบแรกเป็น false อ่ะ Pattern ก็เหมือนกันนี่แว๊ -__-"
แล้วก็มาเอะใจตรง Pattern ที่ต้องครอบด้วย Double Quote( " ) นี่ล่ะ ถ้ามันมี Backslash( \ ) ที่เป็น escape character มันจะไม่ทำงานนี่หว่า.....

ตกม้าตายครับงานนี้....ง่าวแดกเบย T[]T

วิธีแก้ก็คือใส่ Backslash เบิ้ลเข้าไปอีกตัวเป็นอันจบ
แก้เสร็จแล้วก็จะได้แบบนี้
new RegExp("test(\\d+)", "i")

อ้างอิง

Comments