C#中不同格式數據校驗的正則表達式


網上經常看到用正則表達式校驗數據的文章,有的雖然總結得很全,但是大多數都沒有經過嚴格驗證,錯誤較多。

本文包含三十余條不同格式數據校驗的C#正則表達式,一般均附有說明,且在Visual Studio里面跑過。

 

正則表達式基本規則對照表:

 推薦一個不錯的網站:在線正則表達式測試

/*
說明:
1、下面的正則都是以^開頭,以$結尾,說明是把整個字符串拿來匹配。
2、下面的正則表達式前都應該加@,例如:bool reg = Regex.IsMatch("35_ab", @"^[0-9a-zA-Z_]{1,}$");
3、左括號和右括號不要濫用。
4、形如[0-9]這樣的表示中最好不要有空格,例如不宜寫成[0 - 9]。

*/

 

可以用下面的控制台程序進行正則表達式的驗證:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Console_regex
{
    class Program
    {
        static void Main(string[] args)
        {


            bool l = Regex.IsMatch("_65_", @"^[0-9a-zA-Z_]{1,}$");


            if (l ==true)
            {
                Console.WriteLine("匹配正確");
            }

            else
            {
                Console.WriteLine("匹配錯誤");    
            }
            
            Console.ReadKey();
        }
    }
}

 

1.由數字、26個英文字母或者下划線組成的字符串:
    ^[0-9a-zA-Z_]{1,}$
    
2.非負整數(正整數+0): +表示出現重復1次或多次  
    ^\d+$
    
3.正整數:中間的[0 - 9] 后面沒有*,說明至少有一位1到9的數字
    ^[0-9]*[1 - 9][0 - 9]*$
    
4.非正整數(負整數 + 0):|是或運算,也可以將最外面的一層()剝掉,寫作^(-\d+)|(0+)$
    ^((-\d+)|(0+))$
    
5.負整數 :由於中間那個[1 - 9] 后面沒有*,所以至少有一個1到9之間的數,所以-0000這樣的數據也不能通過
    ^-[0-9]*[1 - 9][0 - 9]*$
    
6.整數: 由於-后面有?(表示重復0次或1次),所以-號是可有可無的,因此可以表示全體整數   
    ^-?\d+$
    
7.正整數或非負浮點數(正浮點數 + 0):+表示出現重復1次或多次,? 表示重復0次或1次
    ^\d+(\.\d+)?$
    
8.正浮點數 :匹配三類,包括0.098700.0987以及00100.0987的形式,主要考慮不能含0,即沒有00.000這種
    ^([0-9]+\.[0-9]*[1 - 9][0 - 9]*)|([0-9]*[1 - 9][0 - 9]*\.[0-9]+)$
    
9.非正浮點數(負浮點數 + 0):前面匹配負浮點數和形如-00.000這樣的0,后面匹配0和0.00這樣的0,? 表示重復0次或1次
    ^((-\d+(\.\d+)?)|(0+(\.0+)?))$
    
10.負浮點數 :中間這個或運算|是否需要呢?
    ^-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+))$
    
11.浮點數 :不對,感覺應該是^-?\d+\.\d+$
    ^(-?\d+)(\.\d+)?$
    
12.由26個英文字母組成的字符串 :  +表示出現重復1次或多次
    ^[A-Za-z]+$
    
13.由26個英文字母的大寫組成的字符串 :
    ^[A-Z]+$
    
14.由26個英文字母的小寫組成的字符串 :
    ^[a-z]+$
    
15.由數字和26個英文字母組成的字符串 :[A-Za-z0-9]中是或的關系,也就是只要出現大寫字母、小寫字母或數字都行
    ^[A-Za-z0-9]+$
    
16.由數字、26個英文字母、漢字或者下划線組成的字符串 :  匹配字母或數字或下划線或漢字,注意不能有空格或其他特殊字符
    ^\w+$
    
17.email地址 :匹配xh6300@163.com和xh.tuce @qq.com這兩類格式的郵箱(.不同),且可以有中文和短橫杠-,注意中括號里的項是或的關系
    ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
    
18.url:  url的開頭可以是http或者ftp、file等,url中可以有短橫杠-,\? 是對問號的轉義,\S(\s的反義)匹配任意不是空白符的字符
    ^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$
    
    
19.電話號碼:開頭3或4位數字或者不寫,短橫杠-寫或者不寫,后面7或8位數字
    ^(\d{3,4}-?)?\d{7,8}$
    
20.IP地址:匹配思想是先匹配XXX,再將.XXX重復3次
    ^(25[0-5]|2[0-4]
[0-9]|1[0-9]
[0-9]|[0-9]{1,2})(\.(25[0-5]|2[0-4]
[0-9]|1[0-9]
[0-9]|[0-9]{1,2})){3}$
    
21.匹配中文字符的正則表達式:不含中文標點。如果只判斷字符串是否含中文(而不要求全部由中文組成),可以寫作[\u4e00-\u9fa5]
    ^[\u4e00-\u9fa5]+$
    
22.匹配首或尾空格的正則表達式:
    ^(\s)|(\s)$    
    
23.匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下划線):
    ^[a-zA-Z][a-zA-Z0-9_]{4,15}$    
    
24.匹配騰訊QQ號:一般的QQ號最少5位,最多11位,首位不能為0
    ^[1-9][0-9]{4,10}$
    
25.只能輸入數字:
    ^[0-9]+$
    
26.只能輸入n位的數字:
    ^\d{n}$
    
27.只能輸入至少n位的數字:
    ^\d{n,}$
    
28.只能輸入m ~n位的數字:
    ^\d{m,n}$
    
29.只能輸入零和非零開頭的數字:這個正則不支持00或者002這樣的數據
    ^(0|[1-9][0-9]*)$
    
30.只能輸入有兩位小數的正實數:
    ^[0-9]+\.[0-9]{2}$
    
31.只能輸入有1~3位小數的正實數:
    ^[0-9]+\.[0-9]{1,3}$
    
32.只能輸入非零的正整數:支持45或者+4895這樣的表示,不支持+09或者0087這樣的表示
    ^\+?[1-9][0-9]*$
    
33.只能輸入非零的負整數:不支持-098這樣的表示
    ^\-[1-9][0-9]*$
    
34.只能輸入長度為3的字符串:支持“我愛你”這3個漢字的字符串,一個漢字是一個字符
    ^.{3}$
    
35.只能輸入由數字和26個英文字母組成的字符串:
    ^[A-Za-z0-9]+$
    
36.只能輸入由數字和26個英文字母、下划線或漢字組成的字符串:\w表示匹配字母或數字或下划線或漢字
    ^\w+$
        
37.驗證是否包含有 %&',;=?$\"等字符:輸入09&輸出是true,因為含有&,如果要驗證字符^該怎么辦?^表示取反
    [%&',;=?$\\]+

1、由數字、26個英文字母、下划線或漢字的正則表達式

2、正則表達式30分鍾入門教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM