渝水峦山

更多的时候,只是喜欢一个人静静的写代码.不断尝试与学习.

导航

正则表达式处理基类

发个出来.希望对做项目的有些帮助.
  1Imports System
  2Imports System.Text
  3Imports System.Text.RegularExpressions
  4
  5Namespace WanerSoft.Provider.Text
  6
  7    ''' <summary>
  8    ''' 正则表达式处理
  9    ''' </summary>
 10    ''' <remarks></remarks>

 11    Public Class RegExp
 12
 13        ''' <summary>
 14        ''' 正则表达式替换,重写
 15        ''' </summary>
 16        ''' <param name="input">输入内容</param>
 17        ''' <param name="pattern">替换规则</param>
 18        ''' <param name="replacement">替换结果</param>
 19        ''' <returns></returns>
 20        ''' <remarks></remarks>

 21        Public Shared Function Replace(ByVal input As StringByVal pattern As StringByVal replacement As StringAs String
 22            Return Regex.Replace(input, pattern, replacement, (RegexOptions.Multiline Or RegexOptions.IgnoreCase))
 23        End Function

 24
 25        ''' <summary>
 26        ''' 正则表达式替换,重写
 27        ''' </summary>
 28        ''' <param name="input">输入内容</param>
 29        ''' <param name="pattern">替换规则</param>
 30        ''' <param name="replacement">替换结果</param>
 31        ''' <param name="regexOptions">RegexOptions枚举</param>
 32        ''' <returns></returns>
 33        ''' <remarks></remarks>

 34        Public Shared Function Replace(ByVal input As StringByVal pattern As StringByVal replacement As StringByVal regexOptions As RegexOptions) As String
 35            Return Regex.Replace(input, pattern, replacement, regexOptions)
 36        End Function

 37
 38        ''' <summary>
 39        ''' 正则表达式替换,批量,重写
 40        ''' </summary>
 41        ''' <param name="input">输入内容</param>
 42        ''' <param name="pattern">替换规则</param>
 43        ''' <param name="replacement">替换结果</param>
 44        ''' <param name="ro">RegexOptions枚举</param>
 45        ''' <returns></returns>
 46        ''' <remarks></remarks>

 47        Public Shared Function Replace(ByVal input As StringByVal pattern As String(), ByVal replacement As String(), ByVal ro As RegexOptions) As String
 48            For i As Integer = 0 To pattern.Length - 1
 49                input = Regex.Replace(input, pattern(i), replacement(i), ro)
 50            Next
 51            Return input
 52        End Function

 53
 54        ''' <summary>
 55        ''' 搜索正则表达式的所有匹配项,不区分大小写及换行
 56        ''' </summary>
 57        ''' <param name="input">搜索内容</param>
 58        ''' <param name="pattern">匹配规则</param>
 59        ''' <returns></returns>
 60        ''' <remarks></remarks>

 61        Public Shared Function Matches(ByVal input As StringByVal pattern As StringAs MatchCollection
 62            Dim ObjRegex As Regex = New Regex(pattern, (RegexOptions.Multiline Or RegexOptions.IgnoreCase))
 63            Return ObjRegex.Matches(input)
 64        End Function

 65
 66        ''' <summary>
 67        ''' 单个正则表达式匹配的结果,不区分大小写及换行
 68        ''' </summary>
 69        ''' <param name="input">搜索内容</param>
 70        ''' <param name="pattern">匹配规则</param>
 71        ''' <returns></returns>
 72        ''' <remarks></remarks>

 73        Public Shared Function Match(ByVal input As StringByVal pattern As StringAs Match
 74            Dim ObjRegex As Regex = New Regex(pattern, (RegexOptions.Multiline Or RegexOptions.IgnoreCase))
 75            Return ObjRegex.Match(input)
 76        End Function

 77
 78        ''' <summary>
 79        ''' 判断是否为物理路径
 80        ''' </summary>
 81        ''' <param name="Path">地址</param>
 82        ''' <returns></returns>
 83        ''' <remarks></remarks>

 84        Public Shared Function IsPhysicalPath(ByVal Path As StringAs Boolean
 85            Dim pattern As String = "^\s*[a-zA-Z]:.*$"
 86            Return Regex.IsMatch(Path, pattern)
 87        End Function

 88
 89        ''' <summary>
 90        ''' 判断是否为相对路径
 91        ''' </summary>
 92        ''' <param name="s">地址</param>
 93        ''' <returns></returns>
 94        ''' <remarks></remarks>

 95        Public Shared Function IsRelativePath(ByVal s As StringAs Boolean
 96            If ((s Is NothingOrElse (s = String.Empty)) Then
 97                Return False
 98            End If
 99            If (s.StartsWith("/"OrElse s.StartsWith("?")) Then
100                Return False
101            End If
102            If Regex.IsMatch(s, "^\s*[a-zA-Z]{1,10}:.*$"Then
103                Return False
104            End If
105            Return True
106        End Function

107
108        ''' <summary>
109        ''' 判断是否为邮件地址
110        ''' </summary>
111        ''' <param name="s">内容</param>
112        ''' <returns></returns>
113        ''' <remarks></remarks>

114        Public Shared Function IsEmail(ByVal s As StringAs Boolean
115            Dim pattern As String = "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"
116            Return Regex.IsMatch(s, pattern)
117        End Function

118
119        ''' <summary>
120        ''' 判断是否为IP
121        ''' </summary>
122        ''' <param name="s">内容</param>
123        ''' <returns></returns>
124        ''' <remarks></remarks>

125        Public Shared Function IsIp(ByVal s As StringAs Boolean
126            Dim pattern As String = "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$"
127            Return Regex.IsMatch(s, pattern)
128        End Function

129
130        ''' <summary>
131        ''' 判断是否为数字
132        ''' </summary>
133        ''' <param name="s">内容</param>
134        ''' <returns></returns>
135        ''' <remarks></remarks>

136        Public Shared Function IsNumeric(ByVal s As StringAs Boolean
137            Dim pattern As String = "^\-?[0-9]+$"
138            Return Regex.IsMatch(s, pattern)
139        End Function

140
141        ''' <summary>
142        ''' 判断是否为整数类型
143        ''' </summary>
144        ''' <param name="s">内容</param>
145        ''' <returns></returns>
146        ''' <remarks></remarks>

147        Public Shared Function IsUnsNumeric(ByVal s As StringAs Boolean
148            Dim pattern As String = "^[0-9]+$"
149            Return Regex.IsMatch(s, pattern)
150        End Function

151
152        ''' <summary>
153        ''' 判断是否为小数
154        ''' </summary>
155        ''' <param name="s">内容</param>
156        ''' <returns></returns>
157        ''' <remarks></remarks>

158        Public Shared Function IsUnsFlaot(ByVal s As StringAs Boolean
159            Dim pattern As String = "^[0-9]+.?[0-9]+$"
160            Return Regex.IsMatch(s, pattern)
161        End Function

162
163        ''' <summary>
164        ''' 判断是否为安全字符串(防注入)
165        ''' </summary>
166        ''' <param name="s">内容</param>
167        ''' <returns></returns>
168        ''' <remarks></remarks>

169        Public Shared Function IsSafety(ByVal s As StringAs Boolean
170            Dim input As String = Regex.Replace(s.Replace("%20"" "), "\s"" ")
171            Dim pattern As String = "select |insert |delete from |count\(|drop table|update |truncate |asc\(|mid\(|char\(|xp_cmdshell|exec master|net localgroup administrators|:|net user|""|\'| or "
172            Return Not Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase)
173        End Function

174
175        ''' <summary>
176        ''' 判断是否为Unicode
177        ''' </summary>
178        ''' <param name="s">内容</param>
179        ''' <returns></returns>
180        ''' <remarks></remarks>

181        Public Shared Function IsUnicode(ByVal s As StringAs Boolean
182            Dim pattern As String = "^[\u4E00-\u9FA5\uE815-\uFA29]+$"
183            Return Regex.IsMatch(s, pattern)
184        End Function

185
186        ''' <summary>
187        ''' 判断是否为Url
188        ''' </summary>
189        ''' <param name="s">内容</param>
190        ''' <returns></returns>
191        ''' <remarks></remarks>

192        Public Shared Function IsUrl(ByVal s As StringAs Boolean
193            Dim pattern As String = "^(http|https|ftp|rtsp|mms):(\/\/|\\\\)[A-Za-z0-9%\-_@]+\.[A-Za-z0-9%\-_@]+[A-Za-z0-9\.\/=\?%\-&_~`@:\+!;]*$"
194            Return Regex.IsMatch(s, pattern, RegexOptions.IgnoreCase)
195        End Function

196
197    End Class

198
199End Namespace

200

posted on 2008-06-08 16:34  waner  阅读(293)  评论(0编辑  收藏  举报