วิธีทำ
ใช้ Regular Expression กับ backreference (\1, \2) เพื่อจับ pattern ที่ซ้ำกัน
ตัวอย่างโค้ด
var groupValues1 = "10 10 10";
var groupValues2 = "10 10 10 10";
var groupValues3 = "10 10";
var regularExpression = /^(\d+)(\s)\1\2\1$/;
var isValidGroup1 = regularExpression.test(groupValues1);
var isValidGroup2 = regularExpression.test(groupValues2);
var isValidGroup3 = regularExpression.test(groupValues3);
if(isValidGroup1==true)
console.log("This is a valid group="+groupValues1);
else
console.log("This is not a valid group="+groupValues1);
if(isValidGroup2==true)
console.log("This is a valid group="+groupValues2);
else
console.log("This is not a valid group="+groupValues2);
if(isValidGroup3==true)
console.log("This is a valid group="+groupValues3);
else
console.log("This is not a valid group="+groupValues3);
วิธีรัน
node fileName.js
ชื่อไฟล์ demo188.js
ผลลัพธ์
PS C:\Users\Amit\javascript-code> node demo188.js This is a valid group=10 10 10 This is not a valid group=10 10 10 10 This is not a valid group=10 10
คำอธิบาย
Regex /^(\d+)(\s)\1\2\1$/:
- (\d+) capture group 1: ตัวเลข (10)
- (\s) capture group 2: whitespace (space)
- \1\2\1 backreference: ต้องมี group1 + group2 + group1 อีกครั้ง
Match ได้แค่ "10 10 10" (3 กลุ่ม) ไม่ match "10 10 10 10" (4 กลุ่ม) หรือ "10 10" (2 กลุ่ม)