Visual?Studio中的正則表達式實戰(zhàn)例子
一、核心概念與應用場景
介紹:正則表達式是Visual Studio中強大的文本處理工具,可用于代碼查找 / 替換、文本驗證和批量修改。
定義:通過模式匹配快速定位、提取或修改文本的工具。
VS中的核心場景:
1.代碼重構(如批量替換變量名)
2.文本驗證(如輸入框手機號 / 身份證號校驗)
3.日志分析(提取特定格式數(shù)據(jù))
二、模板及使用方法
1.查找 / 替換中的正則模板
在VS的[查找和替換]窗口(Ctrl + F / Ctrl + H)中,勾選[使用正則表達式](Alt + E),即可使用下列模板:
| 模板類型 | 示例正則 | 用途 |
| 變量名替換 | (\w+)\s*=\s*null; | 匹配所有 變量名 = null; |
| 注釋提取 | `//\s*(TODO | FIXME):s*(.*)` |
| HTML標簽匹配 | <(\w+).*?>.*?</\1> | 匹配成對HTML標簽 |
2.代碼中的正則表達式(C#示例)
在WinForm或ASP.NET中,可通過System.Text.RegularExpressions.Regex類實現(xiàn)驗證:
using System.Text.RegularExpressions;
//驗證手機號
public bool IsValidPhone(string input)
{
? ? return Regex.IsMatch(input,@"^1[3-9]\d{9}$");
}三、VS正則的特點與注意事項
| 特點 | 注意事項 |
| 語法擴展 | 支持\w(單詞字符)、\d(數(shù)字)等元字符,但需要注意轉義(如\需要寫為\\) |
| 分組捕獲 | 使用()捕獲分組,替換時使用$1 / $2引用(如$1表示第一個分組) |
| 多行模式 | 默認.不匹配換行符,需開啟[多行模式]((?m))或使用\r?\n匹配換行 |
| 性能警告 | 復雜正則可能導致卡頓,建議測試后再批量替換 |
四、正則表達式常用元字符
Visual Studio中使用.NET正則表達式,常用元字符如下:
1. 點號(.):匹配任何單個字符(換行符除外)。
2. 脫字符(^):匹配輸入字符串的開始位置。如果設置了多行模式,也匹配“\n”或“\r”之后的位置。
3. 美元符($):匹配輸入字符串的結束位置。如果設置了多行模式,也匹配“\n”或“\r”之前的位置。
4. 星號(*):匹配前面的子表達式零次或多次。
5. 加號(+):匹配前面的子表達式一次或多次。
6. 問號(?):匹配前面的子表達式零次或一次。
7. 花括號({n}、{n,}、{n,m}):{n}表示精確匹配n次;{n,}表示至少匹配n次;{n,m}表示匹配n到m次。
8. 圓括號(()):將括號之間的表達式定義為“組”,并且將匹配這個表達式的字符保存到一個臨時區(qū)域,可以用\1到\9的符號來引用。
9. 豎線(|):將兩個匹配條件進行邏輯“或”運算。
10. 反斜杠(\):將下一個字符標記為特殊字符、原義字符、向后引用或八進制轉義符。例如,“\n”匹配\n,“\n”匹配換行符,“\”匹配“\”。
11. 方括號([]):定義字符集合,匹配其中任意一個字符。例如,“[aeiou]”匹配任意一個元音字母。
12. 反方括號([^]):匹配不在方括號中的任意字符。例如,“[^0-9]”匹配任意非數(shù)字字符。
13. 連字符(-):在字符類中表示范圍。例如,“[a-z]”匹配任意小寫字母。
14. 單詞邊界(\b):匹配單詞邊界。例如,“\bcat\b”匹配“cat”但不匹配“category”。
15. 非單詞邊界(\B):匹配非單詞邊界。例如,“\Bcat\B”匹配“scattered”中的“cat”但不匹配單獨的“cat”。
五、預定義字符類元字符速查表
| 元字符 | 功能描述 | 簡單示例 | 匹配結果 |
| \d | 匹配任意單個數(shù)字(等于[0-9]) | \d{3} | 123、456 |
| \D | 匹配任意帶個非數(shù)字字符 | \D | a、!、 (空格) |
| \w | 匹配字母、數(shù)字、下劃線 | \w+ | hello、user_01 |
| \W | 匹配非字母、非數(shù)字、非下劃線 | \W | @、#、+ |
\s | 匹配任意空白字符(空白格、制表符、換行符等) | a\sb | a b、a\tb |
\S | 匹配任意非空白字符 | \S | x、5、* |
| \b | 匹配單詞邊界 | \bcat\b | 獨立單詞cat,不匹配category里的cat |
| \B | 匹配非單詞邊界 | \Bact\B | 匹配scattered里的cat |
| \t | 匹配制表符(Tab輸入) | a\tb | a b(Tab分隔的a和b) |
| \n | 匹配換行符 | a\nb | a換行后接b |
| \r | 匹配回車符 | a\rb | 回車后切換位置的a和b |
六、實戰(zhàn)例子:手機號與身份證號的驗證
1.手機號驗證
正則表達式:^1[3-9]\d{9}$
解釋:以1開頭,第二位為3-9,后接9位數(shù)字。
VS查找替換場景:
1.打開[查找和替換](Ctrl+H)
2.輸入查找內容:(\b1[3-9]\d{9}\b),替換為:**$1**(高亮手機號)
C#代碼驗證:
? ? ? ? ? string phone = "13800138000";
? ? ? ? ? bool isValid = Regex.IsMatch(phone,@"^1[3-9]\d{9}$");? ?//返回true2.身份證號驗證(18位)
正則表達式:^\d{17}[\dXx]$
解釋:17位數(shù)字 + 最后一位(數(shù)字或X/x)
VS查找替換場景:
查找內容:(\b\d{17}[\dXx]\b),替換為:ID:$1(標記身份證號)
C#代碼驗證:
? ? ? ? ? string idCard = "110101199001011234";
? ? ? ? ? bool isValid = Regex.IsMatch(idCard,@"^\d{17}[\dXx]$");? ?//返回true總結
到此這篇關于Visual Studio中的正則表達式實戰(zhàn)例子的文章就介紹到這了,更多相關Visual Studio正則表達式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MyEclipse刪除網上復制下來的來代碼帶有的行號(正則去除行號)
這篇文章主要介紹了MyEclipse刪除網上復制下來的來代碼帶有的行號,利用正則表達式進行去除,感興趣的小伙伴們可以參考一下2015-12-12
用Javascript正則實現(xiàn)url鏈接的解析類
一個非常健全的 Javascript 鏈接(URL)解析類,他用了正則表達式可以準確獲取一個完整的 URL 中每個部分的內容,包括協(xié)議、URL中包含的用戶名和密碼、主機名、端口、路徑名、參數(shù)、錨點(Fragment Anchor)等信息2008-06-06

