基本元字符:
. 任意的一個非換行字符
[] 集合匹配,匹配一個[]中出現的字符. 是在多個字符中取一個.
() 調整優先級的作用. 還有一個分組的作用
| 或的意思,測試|一下. 注意,或的優先級最低
限定元字符
+ 緊跟這個符號前面的元素出現1次到多次 {1,}
* 緊跟這個符號前面的元素出現0次到多次 {0,}
? 緊跟這個符號前面的元素有或沒有 {0,1}
{n} 緊跟這個符號前面的元素出現n次
{n,} 緊跟這個符號前面的元素出現n次,最多無限次
{n,m} 緊跟這個符號前面的元素出現n次,最多m次
首尾元字符
\d+ "abc123def" "123"
^ 必須以某某字符開頭的含義,在[]表示否定 [^abc] 例如:^\d+(必須以數字開頭)
$ 必須以某某結尾 例如:\d+$(必須以數字結尾),^\d+$(必須以數字開頭和結尾)
$ 分組后對組的引用
簡寫元字符(小寫肯定,大寫否定)
\d 數字 \D 非數字 digit
\w 文本 \W 非文本 word
\s 空格 \S 非空格 space
JavaScript、C#
-> C#中
命名空間:System.Text.RegylarExpressions;
Regex
Match
MatchCollection
-> 四個模型
bool Ragex.IsMatch(處理文本, 正則表達式); 文本是否有正則表達式內容
Match Regex.Match(處理文本, 正則表達式); 在文本當中將匹配的內容提取出來(只匹配從左到右第一個)
MatchCollection Regex.Matches(處理文本, 正則表達式); 提取所有匹配文本
string Regex.Replace(處理字符串, 正則表達式, 替換字符串);
1------2-----3---4---5--6---7-----8-----9
Regex.Replace(s, @"\-+", "-")
提取的知識點
-> 提取的兩種語法
-> 貪婪模式
-> 分組(如何分、如何用),
[\s\S]表示任意字符
WebClient wc = new WebClient(); string html1 = wc.DownloadString("http://192.168.1.250/"); src="[^"]+" string html = File.ReadAllText("1.txt", Encoding.Default); string regex = @"【\s*\d+\s*】[\s\S]+?</div>"; Match m = Regex.Match(html, regex); Match mm; string s; if (m.Success) { mm = Regex.Match(m.Value, @">[\s\S]+<"); s = mm.Value.Trim('>', '<', '\t', '\r', '\n'); s = Regex.Replace(s, @"\s+", ""); }
List<string> list = new List<string>(); MatchCollection mc = Regex.Matches(html, regex); for (int i = 0; i < mc.Count; i++) { Match m = mc[i]; Match mm; string s; if (m.Success) { mm = Regex.Match(m.Value, @">[\s\S]+<"); s = mm.Value.Trim('>', '<', '\t', '\r', '\n'); s = Regex.Replace(s, @"\s+", ""); list.Add(s); } }
string ip = "http://192.168.1.250/"; WebClient wc = new WebClient(); string html1 = wc.DownloadString("http://192.168.1.250/"); // src="[^"]+" // 分組編號從左往右分別從1開始 MatchCollection mc = Regex.Matches(html1, @"src=""([^""]+jpg)"""); for (int i = 0; i < mc.Count; i++) { Match m = mc[i]; string t = m.Groups[1].Value; // http://www.123.com/123.jpg string address = ip.TrimEnd('/') + "/" + t; wc.DownloadFile(address, i + ".jpg"); }
asp.net 驗證正則表達式
整數或者小數:^[0-9]+\.{0,1}[0-9]{0,2}$
只能輸入數字:"^[0-9]*$"。
只能輸入n位的數字:"^\d{n}$"。
只能輸入至少n位的數字:"^\d{n,}$"。
只能輸入m~n位的數字:。"^\d{m,n}$"
只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。
只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。
只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。
只能輸入非零的正整數:"^\+?[1-9][0-9]*$"。
只能輸入非零的負整數:"^\-[1-9][]0-9"*$。
只能輸入長度為3的字符:"^.{3}$"。
只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$"。
只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$"。
只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$"。
只能輸入由數字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"。
只能輸入由數字、26個英文字母或者下划線組成的字符串:"^\w+$"。
驗證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下划線。
驗證是否含有^%&'',;=?$\"等字符:"[^%&'',;=?$\x22]+"。
只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
驗證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
驗證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
驗證身份證號(15位或18位數字):"^\d{15}|\d{18}$"。
驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。整數或者小數:^[0-9]+\.{0,1}[0-9]{0,2}$
只能輸入數字:"^[0-9]*$"。
只能輸入n位的數字:"^\d{n}$"。
只能輸入至少n位的數字:"^\d{n,}$"。
只能輸入m~n位的數字:。"^\d{m,n}$"
只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。
只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。
只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。
只能輸入非零的正整數:"^\+?[1-9][0-9]*$"。
只能輸入非零的負整數:"^\-[1-9][]0-9"*$。
只能輸入長度為3的字符:"^.{3}$"。
只能輸入由26個英文字母組成的字符串:"^[A-Za-z]+$"。
只能輸入由26個大寫英文字母組成的字符串:"^[A-Z]+$"。
只能輸入由26個小寫英文字母組成的字符串:"^[a-z]+$"。
只能輸入由數字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"。
只能輸入由數字、26個英文字母或者下划線組成的字符串:"^\w+$"。
驗證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下划線。
驗證是否含有^%&'',;=?$\"等字符:"[^%&'',;=?$\x22]+"。
只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。
驗證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
驗證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX- XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。
驗證身份證號(15位或18位數字):"^\d{15}|\d{18}$"。
驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。