Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

Regex - ใช้ Pattern ซ้ำเพื่อ Capture Groups ใน JavaScript

วิธีทำ

ใช้ 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 กลุ่ม)