正则表达式

    技术2022-05-19  24

    正则表达式用例:

     

    ^/S+[a-z A-Z]$ 不能为空 不能有空格 只能是英文字母

     

    /S{6,} 不能为空 六位以上

     

    ^/d+$ 不能有空格 不能非数字

     

    (.*)(/.jpg|/.bmp)$ 只能是jpg和bmp格式

     

    ^/d{4}/-/d{1,2}-/d{1,2}$ 只能是2004-10-22格式

     

    ^0$ 至少选一项

     

    ^0{2,}$ 至少选两项

     

    ^[/s|/S]{20,}$ 不能为空 二十字以上

     

    ^/+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(/.|/-))+[a-z]{2,6}$ 邮件格式

     

    /w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*([,;]/s*/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*)*  输入多个地址用逗号或空格分隔邮件

     

     

    以下内容来自MSDN博客

    匹配中文字符的正则表达式: [/u4e00-/u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^/x00-/xff]评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)匹配空白行的正则表达式:/n/s*/r评注:可以用来删除空白行匹配HTML标记的正则表达式:<(/S*?)[^>]*>.*?|<.*? />评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力匹配首尾空白字符的正则表达式:^/s*|/s*$评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*评注:表单验证时很实用匹配网址URL的正则表达式:[a-zA-z]+://[^/s]*评注:网上流传的版本功能很有限,上面这个基本可以满足需求匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$评注:表单验证时很实用匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7}评注:匹配形式如 0511-4405222 或 021-87888822匹配腾讯QQ号:[1-9][0-9]{4,}评注:腾讯QQ号从10000开始匹配中国邮政编码:[1-9]/d{5}(?!/d)评注:中国邮政编码为6位数字匹配身份证:/d{15}|/d{18}评注:中国的身份证为15位或18位匹配ip地址:/d+/./d+/./d+/./d+评注:提取ip地址时有用

     

    以下代码为:C#.NET中使用正则表达式 替换字符串

     

    using System; using System.Text.RegularExpressions; public class Example { public static void Main() { string pattern = "(Mr//.? |Mrs//.? |Miss |Ms//.? )"; string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels", "Abraham Adams", "Ms. Nicole Norris" }; foreach (string name in names) Console.WriteLine(Regex.Replace(name, pattern, String.Empty)); } } 

    以下自己做的简单使用,不过是用VB6.0,是用以前要添加 引用 Microsoft VBScript Regular Expression Expression 5.5

    主要实现的是输入内容为全数字怎字体颜色为黑色,全英文字母则为蓝色,其他情况则字体颜色为红色

    '在模块级别中使用,强制显式声明模块中的所有变量,可以避免键入以有变量时拼错。 Option Explicit Dim strMyTxt As String Dim strMyChar As String Dim strColor As String Dim iLength As Integer Dim I As Integer Dim strRuleNum As String Dim strRuleChar As String Public Sub strInputCheck1() strMyTxt = txtCheckInput.Text If IsNumeric(strMyTxt) Then ' 是纯字母返回黑色字体 txtCheckInput.ForeColor = vbBlack Else iLength = Len(strMyTxt) For I = 1 To iLength strMyChar = Mid(strMyTxt, I, 1) ' strMyChar = UCase(MyMsg) ' 不是纯字母返回红色字体 If Not ((strMyChar >= "A" And strMyChar <= "Z") Or (strMyChar >= "a" And strMyChar <= "z")) Then strColor = vbRed Exit For ' 是纯字母返回蓝色字体 Else: strColor = vbBlue End If Next I txtCheckInput.ForeColor = strColor End If End Sub Public Sub strInputCheck2() strMyTxt = txtCheckInput.Text ' 全部由数字组成的字符串 strRuleNum = "^/d+$" ' 由26个英文字母组成的字符串 strRuleChar = "^[A-Za-z]+$" Dim re As RegExp Set re = New RegExp re.IgnoreCase = False Dim flag As Boolean ' 验证是不是全为数字 If Not flag Then re.Pattern = strRuleNum flag = re.Test(strMyTxt) If flag Then txtCheckInput.ForeColor = vbBlack End If End If ' 验证是不是全为字母 If Not flag Then re.Pattern = strRuleChar flag = re.Test(strMyTxt) If flag Then txtCheckInput.ForeColor = vbBlue End If End If ' 其他类型 If Not flag Then txtCheckInput.ForeColor = vbRed End If End Sub Private Sub txtCheckInput_Change() ' 方法1: ' strInputCheck1 ' 使用正则表达式 strInputCheck2 End Sub 

     

    以下更实际的基础:

     

    [abc] a, b, or c (简单类)  [^abc] 除了a、b或c之外的任意 字符(求反)  [a-zA-Z] a到z或A到Z ,包含(范围)  [a-z-[bc]] a到z,除了b和c : [ad-z](减去)  [a-z-[m-p]] a到z,除了m到 p: [a-lq-z]  [a-z-[^def]] d, e, 或 f view plaincopy to clipboardprint?预定义的字符类   . 任意字符(也许能与行终止符匹配,也许不能)   /d 数字: [0-9]   /D 非数字: [^0-9]   /s 空格符: [ /t/n/x0B/f/r]   /S 非空格符: [^/s]   /w 单词字符: [a-zA-Z_0-9]   /W 非单词字符: [^/w]


    最新回复(0)