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

วิธีเขียน Regex สำหรับตัวเลขอย่างเดียวใน C#

การใช้ 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() แทน ซึ่งมีประสิทธิภาพดีกว่าและจัดการรูปแบบตัวเลขได้ครอบคลุมกว่า