การใช้ Regular Expression ตรวจสอบตัวเลขใน C#
Regular Expression (Regex) เป็นรูปแบบข้อความที่ใช้จับคู่กับข้อความนำเข้า .NET Framework มีเครื่องมือ Regex engine ในเนมสเปซ System.Text.RegularExpressions สำหรับการตรวจสอบนี้
อักขระเมตา (Metacharacters) พื้นฐาน
| สัญลักษณ์ | ความหมาย |
|---|---|
* | ศูนย์หรือมากกว่า (zero or more) |
? | ศูนย์หรือหนึ่ง (zero or one) |
^ | ขึ้นต้นข้อความ / หรือเป็น NOT ภายใน [] |
[] | กำหนดช่วงค่า เช่น 0-9, a-z, A-Z |
รูปแบบ Regex สำหรับตัวเลข (รองรับลบและทศนิยม)
@"^-?[0-9][0-9,\.]+$"
คำอธิบาย:
^- เริ่มต้นข้อความ-?- เครื่องหมายลบ (อาจมีหรือไม่มี)[0-9]- ตัวเลขตัวแรก (บังคับ)[0-9,\.]+- ตัวเลขหรือจุดทศนิยม/คอมมาต่อเนื่อง 1 ตัวขึ้นไป$- สิ้นสุดข้อความ
ตัวอย่างการใช้งาน
using System;
using System.Text.RegularExpressions;
class Program
{
public static void Main()
{
string[] testCases = { "123dh", "123", "123.67", "-45", "-12.34", "abc" };
Regex regex = new Regex(@"^-?[0-9][0-9,\.]+$");
foreach (string num in testCases)
{
bool res = regex.IsMatch(num);
Console.WriteLine($"'{num}' => {res}");
}
}
}
ผลลัพธ์:
'123dh' => False '123' => True '123.67' => True '-45' => True '-12.34' => True 'abc' => False
รูปแบบ Regex เพิ่มเติมที่นิยมใช้
| รูปแบบ | คำอธิบาย |
|---|---|
^\d+$ | ตัวเลขจำนวนเต็มบวกเท่านั้น |
^-?\d+$ | ตัวเลขจำนวนเต็ม (รวมลบ) |
^-?\d*\.?\d+$ | ตัวเลขทศนิยม (รองรับ .5, 0.5, -0.5) |
^\d+(\.\d+)?$ | ตัวเลขบวก ทศนิยมได้ (ไม่รองรับลบ) |
หมายเหตุ
Regex เดิม ^-?[0-9][0-9,\.]+$ มีข้อจำกัด: ไม่รองรับเลขทศนิยมที่ขึ้นต้นด้วยจุด (เช่น .5) และอนุญาตให้มีคอมมาหลายตำแหน่งได้ หากต้องการตรวจสอบตัวเลขอย่างเคร่งครัด แนะนำให้ใช้ decimal.TryParse() หรือ double.TryParse() แทน ซึ่งมีประสิทธิภาพดีกว่าและจัดการรูปแบบตัวเลขได้ครอบคลุมกว่า