C#中使用正則表達式初探
2024-07-21 02:18:33
供稿:網友
/******雪龍原創(chuàng)*******/
//版權所有,末經作者同意不得轉載
前段忙了好長一段時間,終于有點時間學點新東西了。記得前段看過幾篇安全方面的文章,提到sql注入的問題,于是就想做些防注入方面的探索。要防范注入,最重要是對輸入的信息,尤其是放到sql語句中執(zhí)行的信息,進行驗證,保證其中不包含惡意的sql元素,而這種驗證,正好屬于正則表達式的范圍,于是對c#的正則表達式進行了實驗,以其滿足我的需要,現將實驗結果與大家分享。
運行環(huán)境:winxp+iis6+asp.net+c#
正則表達式是一種用于模式匹配和替換的強有力工具,它通過構建一個表達式對輸入的字符串進行模式匹配,然后返回處理后的結果,如果你對它還不了解,請繼續(xù)往下看。
以最廣泛的web身份驗證為例:我們從頁面中接收到輸入的用戶名,存入變量temp_username,此時變量中可能含有惡意的信息,我們想要用戶名中只包含英文字符,數字和下劃線,就要構造正則表達式對temp_username進行處理,在c#中是這樣進行的:
我們要使用的是system.text.regularexpressions.regex.replace(字符串,正則表達式,替換字符)這一靜態(tài)方法,其中參數字符串當然就是我們的temp_username了,正則表達式我先給出"//w",替換字符是"",整個方法完成后就是
system.text.regularexpressions.regex.replace(temp_username,"//w","");
//它用來替換與正則表達式匹配成功的字符
下面著重說一下c#中正則表達式的構造:
c#正則表達式的構造和字符串相同,都是放在引號當中,形式如"look"。
正則表達式中提供了專門的“元字符”,它是在正則表達式中具有特殊意義的專用字符,常用的元字符包括"+","*","?","//s","//s","//d","//w","//w",區(qū)分大小寫,下面就對元字符進行說明:
"+" 如"lo+"匹配l后面o出現一次或多次的字符串,如"love","look"都是
"*" 待測試
"?" 待測試
"//s" 匹配單個空格符,包括tab和換行符。
"//s" 匹配除單個空格符之外的所有字符。
"//d" 匹配從0到0的數字。
"//w" 匹配字母、數字和下劃線。
"//w" 匹配所有與//w不匹配的字符。(文中第一個例子就是用了這個元字符,將所有的單引號和空格以及其它非法字符都去掉了)
正則表達式中還提供了專門的定位符,它包括:"^","{$body}quot;,"//b"
正則表達式中還提供了專門的范圍介定符"[]",否定符[^]
[a-z] 表示26個小寫字母中的任意一個
[abcd] 表示abcd這四個字母中的任意一個
[0-9] 表示10個數字
[^a-z] 表示除26個小寫字母以外的字符
國內最大的酷站演示中心!