StepCoding

Repeating Sequeces

อ่าน [786] หมวดหมู่: Regular Expression

ในการกำหนด regular expression ให้มีรูปแบบใดรูปแบบหนึ่ง (หรือ character class) ซ้ำ ๆ กัน จะเรียกว่า quantifier ซึ่งจะใช้ระบุหลังจาก pattern นั้น ๆ ที่เราต้องการให้มันซ้ำได้ และเราสามารถกำหนดได้ว่าต้องการให้ pattern นั้น ๆ ซ้ำอย่างไร ดังตารางนี้

Quantifierความหมาย
?มี pattern นั้น ๆ จำนวน 0 หรือ 1 เท่านั้น
*มี pattern นั้น ๆ ตั้งแต่ 0 ตัวขึ้นไป
+มี pattern นั้น ๆ ตั้งแต่ 1 ตัวขึ้นไป
{n}เราสามารถกำหนดได้โดยตรงว่าต้องการให้ซ้ำกี่ครั้ง
{n,m}กำหนดว่าให้ pattern นั้น ๆ เกิดขึ้นได้น้อยสุด n ครั้งและสูงสุด m ครั้ง
{n,}กำหนดว่าให้ pattern นั้น ๆ ซ้ำได้อย่างน้อย n ครั้ง

ในการกำหนดให้มัน repeat อักขระเพียงตัวเดียว เราสามารถกำหนด quantifier ไว้ด้านหลังอักขระที่ต้องการให้ซ้ำได้เลยเช่น

<?php
$bool = ereg('ca+t', 'caaaaaaaaaaat');
// true เนื่องจากมีตัวอักษร a มากกว่า 1 ครั้งขึ้นไป

$bool = ereg('ca+t', 'ct');
// false เนื่องจากไม่มี a ในข้อความเลย (+ คือต้องมี a อย่างน้อย 1 ตัว)

$bool = ereg('ca?t', 'caaaaaaaaat');
// false เนื่องจากมี a มากกว่า 1 ตัว (? คือจะมี a หรือไม่มีก็ได้ ถ้ามีก็มีได้แค่ตัวเดียวเท่านั้น)

$bool = ereg('ca*t', 'ct');
// true เนื่องจาก * หมายความว่าจะไม่มี a เลยก็ได้ หรือจะมีกี่ตัวก็ได้ (0 - infinite)
?>
ตัวอย่างการกำหนด Pattern ตรวจสอบเบอร์โทรศัพท์
<?php
$bool = ereg('[0-9]{3}-[0-9]{3}-[0-9]{4}', '080-120-2012');
// true

$bool = ereg('[0-9]{3}-[0-9]{3}-[0-9]{4}', '08-0-102-2012');
// false
?>

ผู้สนับสนุน