精华内容
下载资源
问答
  • EXCEL VBA 正则表达式 MatchCollection对象

    千次阅读 2016-12-03 23:07:55
     正则表达式是通用的文本搜索和处理方案,它的知识不是VBA独有的,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里的重点,需要的朋友可以Google一下,或者参看下面的一些入门教程: ...
    1.正则表达式(Regular Expression)基础
      正则表达式是通用的文本搜索和处理方案,它的知识不是VBA独有的,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里的重点,需要的朋友可以Google一下,或者参看下面的一些入门教程:
    http://deerchao.net/tutorials/regex/regex.htm
    http://www.regexlab.com/zh/regref.htm
    http://www.williamlong.info/archives/433.html
    2.VBA中的正则表达式应用
      在VBA中使用正则表达式,可以通过下列途径实现:
    创建正则表达式对象:
    前期绑定:在VBA代码编辑器中的"Tools"菜单中,选中"References...",然后引用Microsoft VBScript Regular Expressions 5.5类库,然后直接定义对象:Dim reg As New RegExp。
    后期绑定:使用CreateObject方法定义对象:CreateObject("VBSCRIPT.REGEXP")。
    前一种方式的优点是可以有编辑器的Intellisense支持。
    RegExp对象的属性:
    Global - 设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如果搜索应用于整个字符串,Global 属性的值应该为 True,否则其值为 False。默认的设置为True。
    Multiline - 返回正则表达式是否具有标志m, 缺省值为False。如果指定的搜索字符串分布在多行,这个属性是要设置为True的。
    IgnoreCase - 设置或返回一个Boolean值,指明模式搜索是否区分大小写。如果搜索是区分大小写的,则 IgnoreCase 属性应该为False;否则应该设为True。缺省值为True。
    Pattern - 设置或返回被搜索的正则表达式模式。 被搜索的正则字符串表达式。它包含各种正则表达式字符。
    RegExp对象的方法:
    Execute - 对指定的字符串执行正则表达式搜索。需要传入要在其上执行正则表达式的文本字符串。正则表达式搜索的设计模式是通过 RegExp对象的Pattern来设置的。Execute方法返回一个Matches集合,其中包含了在string中找到的每一个匹配的Match对 象。如果未找到匹配,Execute将返回空的Matches集合。
    Replace - 替换在正则表达式查找中找到的文本。
    Test - 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False。
    MatchCollection对象与Match对象
    匹配到的所有对象放在MatchCollection集合中,这个集合对象只有两个只读属性:
    Count:匹配到的对象的数目
    Item:集合的又一通用方法,需要传入Index值获取指定的元素。
    一般,可以使用For Each语句枚举集合中的对象。集合中对象的类型是Match。
    Match对象有以下几个只读的属性:
    FirstIndex - 匹配字符串在整个字符串中的位置,值从0开始。
    Length - 匹配字符串的长度。
    Value - 匹配的字符串。
    SubMatches - 集合,匹配字符串中每个分组的值。作为集合类型,有Count和Item两个属性。
    结尾两个示例:
    ' 正则表达式示例1 提取字符串中的数字
    Sub getNum1()
        ' 这种使用方式需要"工具""引用"
        ' 引用Microsoft VBScript Regular Expressions 5.5类库
        Dim reg As New RegExp
        With reg
            .Global = True
            .IgnoreCase = True
            .Pattern = "\d+"
        End With
        
       Dim mc As MatchCollection
       Dim m As Match
       Set mc = reg.Execute("123aaaaa987uiiui999")
       For Each m In mc
        MsgBox m.Value + 1
       Next
    End Sub
    ' 正则表达式示例2 用"字符串"替换原字符串中符合匹配模式的部分
    Sub getNum2()
        Dim arr
        arr = Split("A12B-R1E2W-E1T-R2T-Q1B2Y3U4D", "-") ' split(字符串,"分隔符")拆分字符串
        MsgBox "arr(0)=" & arr(0) & ";arr(1)=" & arr(1)
        MsgBox Join(arr, ",") ' join(数组,"分隔符")用分隔连接数组的每个元成一个字符串
        
        Dim arrStr() As String
        ReDim arrStr(LBound(arr) To UBound(arr)) ' 为动态数组分配存储空间
        With CreateObject("VBSCRIPT.REGEXP") ' 生成一个正则表达式对象实例
            For i = LBound(arr) To UBound(arr)
                .Global = True ' 设置全局可用,即替换所有符合匹配模式的字符串
                .Pattern = "[^A-Z]" ' 匹配模式为非大写字母
                arrStr(i) = .Replace(arr(i), "") ' 将arr(i)字符串中符合匹配模式的部分替换为空字符
            Next
        End With
        Cells.ClearContents
        Cells(1, 1).Resize(UBound(arr) + 1, 1) = Application.WorksheetFunction.Transpose(arrStr())
    End Sub
    
    示例2
    '<body>タグに onLoad="commonOnload()"があるか。
    Private Function SubCheckBodyCommonOnload(pageStr)
             Dim reg As Object
             Set reg = CreateObject("VBscript.RegExp")
                With reg
                    .Global = True
                    .IgnoreCase = True
                    .Pattern = "(<)([\s]*)(body)([\w\W]*)(onLoad)([\s]*)=([\s]*)(\W)([\s]*)(commonOnload\()([\s]*)(\))"
                End With
                
            SubCheckBodyCommonOnload = reg.test(pageStr)
    End Function
    
    原载
    http://justsee.iteye.com/blog/1468745#

    展开全文
  • EXCEL VBA 正则表达式

    万次阅读 2017-07-06 16:15:09
    [2011-09-09:http://www.cnblogs.com/dxy1982/archive/2011/09/09/2159246.html] ... 数据验证经常出现的情况是,需要验证和处理大量的文本内容,有时候需要查找字符串,有时候要条件替换,并且这些待处理的问题

     

    数据验证经常出现的情况是,需要验证和处理大量的文本内容,有时候需要查找字符串,有时候要按条件替换,并且这些待处理的问题还是有一定的规律可循的,但是无法通过枚举的方式挨个验证,这个时候就需要正则表达式来帮忙。

    1.正则表达式(Regular Expression)基础
      正则表达式是通用的文本搜索和处理方案,它的知识不是VBA独有的,基本上每种语言都内置了正则表达式的功能。正则表达式的基础知识不是这里的重点,需要的朋友可以Google一下,或者参看下面的一些入门教程:
    http://deerchao.net/tutorials/regex/regex.htm
    http://www.regexlab.com/zh/regref.htm
    http://www.williamlong.info/archives/433.html

    2.VBA中的正则表达式应用
      在VBA中使用正则表达式,可以通过下列途径实现:
    创建正则表达式对象:
    前期绑定:在VBA代码编辑器中的"Tools"菜单中,选中"References...",然后引用Microsoft VBScript Regular Expressions 5.5类库,然后直接定义对象:Dim reg As New RegExp。
    后期绑定:使用CreateObject方法定义对象:CreateObject("VBSCRIPT.REGEXP")。
    前一种方式的优点是可以有编辑器的Intellisense支持。

    RegExp对象的属性:
    Global
     - 设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。如果搜索应用于整个字符串,Global 属性的值应该为 True,否则其值为 False。默认的设置为True。
    Multiline - 返回正则表达式是否具有标志m, 缺省值为False。如果指定的搜索字符串分布在多行,这个属性是要设置为True的。
    IgnoreCase - 设置或返回一个Boolean值,指明模式搜索是否区分大小写。如果搜索是区分大小写的,则 IgnoreCase 属性应该为False;否则应该设为True。缺省值为True。
    Pattern - 设置或返回被搜索的正则表达式模式。 被搜索的正则字符串表达式。它包含各种正则表达式字符。

    RegExp对象的方法:
    Execute
     - 对指定的字符串执行正则表达式搜索。需要传入要在其上执行正则表达式的文本字符串。正则表达式搜索的设计模式是通过 RegExp对象的Pattern来设置的。Execute方法返回一个Matches集合,其中包含了在string中找到的每一个匹配的Match对 象。如果未找到匹配,Execute将返回空的Matches集合。
    Replace - 替换在正则表达式查找中找到的文本。
    Test - 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False。

    MatchCollection对象与Match对象
    匹配到的所有对象放在MatchCollection集合中,这个集合对象只有两个只读属性:
    Count:匹配到的对象的数目
    Item:集合的又一通用方法,需要传入Index值获取指定的元素。

    一般,可以使用For Each语句枚举集合中的对象。集合中对象的类型是Match。
    Match对象有以下几个只读的属性:
    FirstIndex - 匹配字符串在整个字符串中的位置,值从0开始。
    Length - 匹配字符串的长度。
    Value - 匹配的字符串。
    SubMatches - 集合,匹配字符串中每个分组的值。作为集合类型,有Count和Item两个属性。

    结尾两个示例:
    ' 正则表达式示例1 提取字符串中的数字
    Sub getNum1()
        ' 这种使用方式需要"工具""引用"
        ' 引用Microsoft VBScript Regular Expressions 5.5类库
        Dim reg As New RegExp
        With reg
            .Global = True
            .IgnoreCase = True
            .Pattern = "\d+"
        End With
        
       Dim mc As MatchCollection
       Dim m As Match
       Set mc = reg.Execute("123aaaaa987uiiui999")
       For Each m In mc
        MsgBox m.Value + 1
       Next
    End Sub
    ' 正则表达式示例2 用"字符串"替换原字符串中符合匹配模式的部分
    Sub getNum2()
        Dim arr
        arr = Split("A12B-R1E2W-E1T-R2T-Q1B2Y3U4D", "-") ' split(字符串,"分隔符")拆分字符串
        MsgBox "arr(0)=" & arr(0) & ";arr(1)=" & arr(1)
        MsgBox Join(arr, ",") ' join(数组,"分隔符")用分隔连接数组的每个元成一个字符串
        
        Dim arrStr() As String
        ReDim arrStr(LBound(arr) To UBound(arr)) ' 为动态数组分配存储空间
        With CreateObject("VBSCRIPT.REGEXP") ' 生成一个正则表达式对象实例
            For i = LBound(arr) To UBound(arr)
                .Global = True ' 设置全局可用,即替换所有符合匹配模式的字符串
                .Pattern = "[^A-Z]" ' 匹配模式为非大写字母
                arrStr(i) = .Replace(arr(i), "") ' 将arr(i)字符串中符合匹配模式的部分替换为空字符
            Next
        End With
        Cells.ClearContents
        Cells(1, 1).Resize(UBound(arr) + 1, 1) = Application.WorksheetFunction.Transpose(arrStr())
    End Sub


    他那代码没看,自己用到写了下
    '<body>タグに onLoad="commonOnload()"があるか。
    Private Function SubCheckBodyCommonOnload(pageStr)
             Dim reg As Object
             Set reg = CreateObject("VBscript.RegExp")
                With reg
                    .Global = True
                    .IgnoreCase = True
                    .Pattern = "(<)([\s]*)(body)([\w\W]*)(onLoad)([\s]*)=([\s]*)(\W)([\s]*)(commonOnload\()([\s]*)(\))"
                End With
                
            SubCheckBodyCommonOnload = reg.test(pageStr)
    End Function
     
    展开全文
  • http://blog.csdn.net/wuyinggui10000/article/category/3173543 我的博客
  • EXCEL 正则表达式

    千次阅读 2010-04-18 23:58:00
    正则表达式是基于文本的编辑器和搜索工具的一个重要部分,传统的?和*方法十分有限。正则表达式在数据有效性验证、替换文本、提取子字符串有很好的应用。 不同的程序或语言对正则表达式的支持是不一样的。像MS Excel...

    正则表达式是基于文本的编辑器和搜索工具的一个重要部分,传统的?和*方法十分有限。正则表达式在数据有效性验证、替换文本、提取子字符串有很好的应用。 不同的程序或语言对正则表达式的支持是不一样的。像MS Excel,仅支持简单的通配符查找和替换。VBA中没有正则表达式对象,要使用正则表达式的话,我们需要在引用里添加Microsoft VBScript Regular Expression 5.5动态库。VBScript的正则表达式支持向前查找(包括肯定式和否定式),支持分组和非分组(仅捕获位置),但不支持向后查找。 下面是一个简单的例子: Sub RegExMatch() Dim regEx as RegExp Dim aMatch as Match Dim Matches as MatchCollection dim patrn as String ' 搜索模式 Dim strng as String Dim RetStr as String patrn="is." strng="IS1 is2 IS3 is4" Set regEx=new RegExp regEx.Pattern=patrn regEx.IgnoreCase=True regEx.Global=True Set Matches=regEx.Execute(strng) For Each aMatch in Matches RetStr=RetStr & "Match found at position " RetStr=RetStr & aMatch.FirstIndex & ". Match Value is '" RetStr=RetStr & aMatch.Value & "'." & vbCrLf Next MsgBox RetStr End Sub 也可以使用后绑定的方法。 Dim regEx As Object Set regEx = CreateObject("VBSCRIPT.REGEXP") RegEx对象的属性和方法属性 Global 设置或返回一个 Boolean 值, 该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个. 缺省为False. IgnoreCase 设置或返回一个Boolean值, 指明模式搜索是否区分大小写. 缺省为False. Pattern 设置或返回被搜索的正则表达式模式. 方法 Test 对指定的字符串执行一个正则表达式搜索, 并返回一个 Boolean 值指示是否找到匹配的模式. object.Test(string) Execute 对指定的字符串执行正则表达式搜索. object.Execute(string) Replace 替换在正则表达式查找中找到的文本. object.Replace(string1, string2) string1是将要进行文本替换的字符串, string2是替换文本字符串. Matches集合和它所包含的Match对象,只能由上面的Execute方法来返回。每个Match对象包括三个属性。 FirstIndex - 匹配项中第一个字符的位置 Length - 匹配项的长度 Value - 匹配项的值 当匹配模式中包含分组的话,Match对象还会包含一个SubMatches集合,也就是$1、$2等等。 关于正则表达式网络上已经有很多的资料,可以Google一下关键字。这里主要将一下分组、反向引用和向前查找。 分组,非捕获分组,反向引用正则表达式模式中使用圆括号对字符进行分组,并保存匹配的文本,被匹配的内容指定给变量$1、$2等等。捕获组的编号有圆开括号在正则表达式模式中的位置决定。使用嵌套的圆括号时,同样的规则也适用。VBScript中不支持命名的分组。 VBScript支持非捕获圆括号(?:the-non-captured-content)。非捕获分组匹配的内容不指定给变量$1等。 非捕获分组使模式看起来更加复杂,但能减少要处理的组数,因此编程会更容易一些,同时也可以提升效率。 有关捕获圆括号的常见用法是将其用于反向引用。下面是摘自脚本帮助文件关于反向引用的介绍。 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下,对一个正则表达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中。可以使用非捕获元字符 ‘?:’, ‘?=’, or ‘?!’ 来忽略对这部分正则表达式的保存。 所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始,连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 ‘/n’ 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。 向后引用一个最简单,最有用的应用是提供了确定文字中连续出现两个相同单词的位置的能力。请看下面的句子: Is is the cost of of gasoline going up up? 根据所写内容,上面的句子明显存在单词多次重复的问题。如果能有一种方法无需查找每个单词的重复现象就能修改该句子就好了。下面的 VBScript 正则表达式使用一个子表达式就可以实现这一功能。 “/b([a-z]+) /1/b” 在这个示例中,子表达式就是圆括号之间的每一项。所捕获的表达式包括一个或多个字母字符,即由’[a-z]+’ 所指定的。该正则表达式的第二部分是对前面所捕获的子匹配的引用,也就是由附加表达式所匹配的第二次出现的单词。’/1′用来指定第一个子匹配。单词边界元字符确保只检测单独的单词。如果不这样,则诸如 “is issued” 或 “this is” 这样的短语都会被该表达式不正确地识别。 使用上面所示的正则表达式,下面的 VBScript 代码可以使用子匹配信息,在一个文字字符串中将连续出现两次的相同单词替换为一个相同的单词: Dim ss, re, rv ss = "Is is the cost of of gasoline going up up?." & vbNewLine Set re = New RegExp re.Pattern = "/b([a-z]+) /1/b" re.Global = True re.IgnoreCase = True re.MultiLine = True rv = re.Replace(ss,"$1") 请注意在 VBScript 代码中,全局、大小写敏感性以及多行标记都是使用 RegExp 对象的适当属性来设置的。 在replace 方法中使用 $1 来引用所保存的第一个子匹配。如果有多个子匹配,则可以用 $2, $3 等继续引用。 向前查找 VBScript支持向前查找,但不支持向后查找。向前查找包括肯定式向前查找和否定式向前查找。 向前查找根据要匹配的字符序列后面存在一个特定的字符序列(肯定式向前查找)或者不存在个特定的字符序列(否定式向前查找)来决定是否匹配。实际上,向前查找指的是一个子模式,这个子模式匹配特定的字符序列,但不返回匹配结果,所以也可以说向前查找子模式匹配的是测试文本中的位置。 例如要匹配States中的State,可以用 (?=States)State 或者用 State(?=s) 写了一个在Excel中的正则表达式工具,可以获得详细的匹配位置、内容和分组,并且可以获得替换内容。

    展开全文
  • 最近在写程序遇到需要用正则表达式验证EXCEL数据名称是否为中文或英文,找到了下面这篇文章主要介绍了正则表达式同时匹配中英文及常用正则表达式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 ...

           最近在写程序遇到需要用正则表达式验证EXCEL数据名称是否为中文或英文,找到了下面这篇文章主要介绍了正则表达式同时匹配中英文及常用正则表达式的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
          匹配中文:[\u4e00-\u9fa5]

          英文字母:[a-zA-Z]

          数字:[0-9]

          匹配中文,英文字母和数字及_: 

         ^[\u4e00-\u9fa5_a-zA-Z0-9]+$

          同时判断输入长度:

          [\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}

         ^[\w\u4E00-\u9FA5\uF900-\uFA2D]*$

         1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:

          ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中:

          ^ 与字符串开始的地方匹配

         (?!_)  不能以_开头

         (?!.*?_$)  不能以_结尾

         [a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线

         $  与字符串结束的地方匹配

        放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$"

     (或者:@"^(?!_)\w*(?<!_)$" 或者 @" ^[\u4E00-\u9FA50-9a-zA-Z_]+$ " )

         2、只含有汉字、数字、字母、下划线,下划线位置不限:

        ^[a-zA-Z0-9_\u4e00-\u9fa5]+$

        3、由数字、26个英文字母或者下划线组成的字符串

        ^\w+$

          4、2~4个汉字

          @"^[\u4E00-\u9FA5]{2,4}$";

          5、常用正则表达式大全!(例如:匹配中文、匹配html)

           匹配中文字符的正则表达式: [u4e00-u9fa5] 

      评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 

      匹配双字节字符(包括汉字在内):[^x00-xff] 

      评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

      匹配空白行的正则表达式:ns*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地址时有用 

      6、匹配特定数字: 

      ^[1-9]d*$    //匹配正整数 
      ^-[1-9]d*$   //匹配负整数 
      ^-?[1-9]d*$   //匹配整数 
      ^[1-9]d*|0$  //匹配非负整数(正整数 + 0) 
      ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0) 
      ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数 
      ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数 
      ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数 
      ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0) 
      ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0) 

      评注:处理大量数据时有用,具体应用时注意修正 

      7、匹配特定字符串: 

      ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串 
      ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串 
      ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串 
      ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串 
      ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串 

      8、在使用RegularExpressionValidator验证控件时的验证功能及其验证表达式介绍如下: 

      只能输入数字:“^[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}$” 

      正确格式为:“XXXX-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”。 

      匹配中文字符的正则表达式: [u4e00-u9fa5] 

      匹配双字节字符(包括汉字在内):[^x00-xff] 

      匹配空行的正则表达式:n[s| ]*r 

      匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/ 

      匹配首尾空格的正则表达式:(^s*)|(s*$) 

      匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 

      匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 

      9、应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 

      String.prototype.len=function(){return this.replace([^x00-xff]/g,"aa").length;} 

      10、应用:JavaScript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现 
    String.prototype.trim = function()
      {
      return this.replace(/(^s*)|(s*$)/g, "");
      }
      11、应用:利用正则表达式分解和转换IP地址
      function IP2V(ip) //IP地址转换成对应数值
      {
      re=/(d+).(d+).(d+).(d+)/g //匹配IP地址的正则表达式
      if(re.test(ip))
      {
      return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
      }
      else
      {
      throw new Error("Not a valid IP address!")
      }
      }
      12、应用:利用正则表达式限制网页表单里的文本框输入内容 

      用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^u4E00-u9FA5]/g,')

    "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,'))" 

      用正则表达式限制只能输入全角字符: οnkeyup="value=value.replace(/[^uFF00-uFFFF]/g,')

    "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,'))" 

      用正则表达式限制只能输入数字:οnkeyup="value=value.replace(/[^d]/g,') "onbeforepaste= "clipboardData.setData

    ('text',clipboardData.getData('text').replace(/[^d]/g,'))" 

      用正则表达式限制只能输入数字和英文:οnkeyup="value=value.replace(/[W]/g,') "onbeforepaste="clipboardData.setData

    ('text',clipboardData.getData('text').replace(/[^d]/g,'

    ```


    以上所述是给大家介绍的正则表达式同时匹配中英文及常用正则表达式,希望对大家有所帮助

    展开全文
  • 但在我们最常用的办公软件EXCEL中,目前没有可直接使用正则表达式的函数(至少10版本的EXCEL没有),那么今天我就分享下如何在EXCEL中自定义正则函数。 一、提需求 比如,我要拆分下面的字符串: 显然这样的...
  • 正则表达式

    2019-11-23 13:27:15
    正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。当前常见的正则表达式主要有两种派系,一种是perl衍生出来的...
  • 在实际开发中经常使用对WORD/EXCEL及...我搜索了一些文章都提供了有关使用正则表达式的不同程度的例子,但是直接套用有许多是不行的。因此,我想在本文中好好整理一下,但是时间原因,一下没法整理完,只好一部分一...
  • 原标题:多功能正则表达式开发工具RegExRX for MacRegExRX是一个完整的正则表达式开发工具,适合新手和专业人士使用,该编辑器具有许多旨在帮助开发和存储正则表达式的功能。RegPCRX基于PCRE库,使用户可以制作与...
  • Hi,大家好,本章节开始将会从零开始和大家用图文的方式,让你从零基础学会正则表达式!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!在上一个章节说到正则表达式的入门级知识点,...
  • EXCEL 正则表达式例子

    千次阅读 2010-04-19 00:01:00
    Private Sub CommandButton1_Click() Dim regEx As RegExp Dim aMatch As Match Dim Matches As MatchCollection Dim patrn As String 搜索模式 Dim strng As String Dim RetStr As
  • Python正则表达式

    2020-01-07 22:36:56
    正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念。利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌 二、常用元字符 1、^:匹配字符串的开头 2、$:...
  • Hi,大家好,本章节开始将会从零开始和大家用图文的方式,让你从零基础学会正则表达式!有兴趣的小伙伴可以持续关注我,或者在专栏中进行查看自我学习,愿与君携手前行!本文将要说到的正则表达式?可能初学的你,一...
  • 在文件或文件夹列表中使用正则表达式搜索。 列出结果到每个单元格。 使用正则表达式进行替换,并输出替换信息数据表。 清理输出信息。 创建一个Excel函数以直接在Excel单元格中应用正则表达式 为什么使用此工具...
  • 在有些情况下(例如,在解析程序输入或处理文本块时),您通常会使用正则表达式在文本中搜索与该模式匹配的一组单词。 字符向量 ‘Joh?n\w*’ 是一个正则表达式的示例。该字符串定义的模式以字母 Jo 开头,后面可跟...
  • 文章目录Python学习日志目录前言进入正题Python学习日志13课 - 正则表达式基本符号表Python对正则表达式的支持例 题(1).用正则表达式分别验证QQ号和用户名(2).用正则表达式找到所给字符串中所有的数字(3).用正则...
  • Excel 中,使用 Alt+F11 快捷键打开 VBA 项目窗口,在左侧的工作表名称上点右键,选择查看代码,即可出出现右侧的代码编辑窗口 在代码窗口中输入以下代码: Private Sub RegExp_Replace() Dim RegExp...
  • 正则表达式资料收集

    2019-10-02 05:16:08
    使用正则表达式找出不包含特定字符串的条目 正则表达式工具 Expresso RegexBuddy 正则表达式知识 字符,使用时另加\ 解释 x 字符x(x可代表任何合法的字符) \0mnn 八进制数0mnn所表示的字符 \xhh 十六...
  • 对于正则表达式其实网上有很多说明,而且各种校验都比较全面了,很多时候其实不需要我们写,直接网上搜。但当我们拿到一个正则表达式时,我们要能看懂。所以,下面给出一个常用操作符,忘记了可以看看。 文章目录...
  • 正则表达式装逼(实用)指南1. 你女朋友喊你查她的号码2. 查找文件中某字符串内容3. 爬取和解析一些不可描述的内容4. 批量格式化处理5. 将数据格式化后复制到Excel6. 代码生成与格式化7. 删除不含某些信息的的内容7....
  • 如何在VBA中使用正则表达式

    千次阅读 2019-05-26 11:56:56
    VBA中的正则表达式应用  在VBA中使用正则表达式,可以通过下列途径实现: 创建正则表达式对象: 前期绑定: 在VBA代码编辑器中的"Tools"菜单中,选中"References…",然后引用Microsoft VBScript Regular ...
  • 正则表达式 grep sed awk

    2019-11-07 10:27:23
    正则表达式正则表达式:字符:sed 命令 正则表达式: 用一组特殊的字符,表示匹配的内容。 用来处理文本文件(可编辑的)。 字符: 普通字符:大小写字母 数字 元字符:特殊含义的字符 使用普通字符...
  • 正则表达式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,222
精华内容 2,488
关键字:

excel按正则表达式搜索