[บทเรียน]ปัญหา Perl ใน RegExp บน JavaScript ไม่ทำงาน
อิงจาก W3C SCHOOLS RegExp เขียนได้ 2 รูปแบบคือ
- var patt=new RegExp(pattern,modifiers);
- var patt=/pattern/modifiers;
ส่วนใหญ่ผมมักจะเขียนแบบที่สองมากว่า เพราะมัน เขียนได้ไวกว่า(มั้ง)
แต่วันนี้เกิดอยากลองไปใช้แบบแรก
ตัวอย่าง
var patt1=new RegExp("test(\d+)", "i")
var ptest=patt1.test("test1234")
console.log(ptest) // Return false
ตัวอย่าง
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
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
Post a Comment