zoukankan      html  css  js  c++  java
  • VB.NET利用正則表達式巧妙限制字符输入

    版权声明:本文为博主原创文章。未经博主同意不得转载。

    https://blog.csdn.net/u010028869/article/details/37913867

        在通常的程序设计中。对字符串的操作是必不可少的部分。比如。我们做的机房收费系统。里面有非常多的文本框,依照不同的须要。我们要输入不同的内容。卡号要输入数字,姓名框也要限制输入字符的长度。有时候甚至还须要从字符串中寻找特定的部分,或者对某一部分进行替换、删除等等。

    使用传统的字符串函数推断方法或静态字符串操作方法,费时费力,且仅仅能查找字符串中固定不变的部分,缺乏灵活性。

    那有什么简单有用的方法呢?通过网络我了解到了一个新的板块“正則表達式

     

    正則表達式

    使用单个字符串来描写叙述、匹配一系列符合某个句法规则的字符串。

    在非常多文本编辑器里,正則表達式通常被用来检索、替换那些符合某个模式的文本。

    通过规定待查找字符串的模式。查找同一类型的字符串,比如要在EMAIL格式的字符串(如wangyi@163.com)中分解出username和server名,能够定义例如以下的正則表達式(?<user>[^@]+)@(?

    <host>.+),然后使用对应的解析器进行解析,得到两个分组user组和host组。user组里存储usernamewangyi,host组里存放server名163.com,而用传统的方法是非常难实现这样的分解的。

     

    由此可见,作为一种字符串处理方式。正則表達式的灵活与强大确实是传统字符串处理方式无法相比的。

     

    vb.net 中的正則表達式处理类

    在VB.NET中使用正則表達式必须先引入命名空间System.Text.RegularExpressions,该命名空间包括一下七个类:Regex、Match、MatchCollection、GroupCollection、CaptureCollection、Group、Capture。

    Regex类表示不可变(仅仅读)正則表達式类,设置待匹配字符串的模式。

    Match类表示正則表達式匹配操作的结果。MatchCollection 类表示成功的非重叠匹配的序列,即匹配后得到的字符串集合。

    在正則表達式中应用最多的就是这三个类。

     

    使用正則表達式类的通用方法是:

    首先生成一个Regex类的实例,并在传入參数中输入正則表達式的模式。然后使用Regex类的对应方法,如IsMatch(推断是否匹配)、Match(返回匹配得到的字符串)等等。

    牛刀小试

    代码

    Imports System.Text.RegularExpressions
    Public Class frmTest
    
        '定义存放正則表達式的常量
        Private Const C_REGULAR_Card = "^d{0,12}$"                     '卡号的输入正則表達式(长度12以内的数字)
        Private Const C_REGULAR_Length = "^.{0,10}$"                    '输入字符长度正則表達式(长度10以内字符)
        Private Const C_REGULAR_Chinese = "^[u4e00-u9fa5]{0,}$"       '仅仅能输入汉字的正則表達式
    
        Private Sub btnCheck_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCheck.Click
            If txtRegular.Text.Trim.Length = 0 Then                     '假设字符为空,退出过程
                MsgBox("请输入字符!")
                Exit Sub
            End If
    
            Dim strPattern As String = String.Empty                     '正則表達式变量
            Dim strCheckedText As String = String.Empty                 '选择的检查项
            '推断赋值
            If CheckCard.Checked Then
                strPattern = C_REGULAR_Card                             '赋值正則表達式
                strCheckedText = CheckCard.Text                         '赋值检查项
            ElseIf CheckLength.Checked Then
                strPattern = C_REGULAR_Length
                strCheckedText = CheckLength.Text
            ElseIf CheckChinese.Checked Then
                strPattern = C_REGULAR_Chinese
                strCheckedText = CheckChinese.Text
            End If
    
            '调用推断函数,传入參数,并给出对应提示
            If funCheckRegular(strPattern, txtRegular.Text) = True Then
                MsgBox("<<" + strCheckedText + ">>---符合规范!

    ", MsgBoxStyle.Information, Me.Text) Else MsgBox("<<" + strCheckedText + ">>---不符规范!", MsgBoxStyle.Exclamation, Me.Text) End If End Sub ''' <summary> ''' 推断输入字符串是否匹配正則表達式 ''' </summary> ''' <param name="strPattern">正則表達式变量</param> ''' <param name="TextReg">输入字符串变量</param> ''' <returns>返回布尔值,匹配返回True,否则返回False</returns> ''' <remarks>2014-07-17 19:54:25 牛迁迁</remarks> Public Function funCheckRegular(ByVal strPattern As String, TextReg As String) As Boolean Return Regex.IsMatch(TextReg, strPattern) End Function Private Sub btnClear_Click_1(sender As Object, e As EventArgs) Handles btnClear.Click txtRegular.Clear() End Sub End Class ’注:这仅仅是一个小Demo。没有採用分层写法。

     

    显示:(请看效果,事实上它会动的。可惜CSDN居然不支持gif图!点击连接查看

    http://m18831658786.blog.163.com/prevPhDownload.do?host=m18831658786&albumId=269674986&photoId=8926571224)

     

    总结

    正則表達式的特点是:

    1.灵活性、逻辑性和功能性非常的强;

    2.能够迅速地用极简单的方式达到字符串的复杂控制效果

    3.对于刚接触的人(我)来说,比較晦涩难懂。

     正則表達式博大精深,能够做到很多你想不到的事情,赶紧试试吧!

     

    很多其它了解,请点击:http://baike.baidu.com/view/94238.htm?

    fr=aladdin


     

查看全文
  • 相关阅读:
    【记录】【MySQL】填充字符串函数 LPAD(str,len,padstr)
    nvm安装node和npm,个人踩坑记录
    win10系统下cmd输入一下安装的软件命令提示拒绝访问解决办法
    bootstrap大图轮播手机端不能手指滑动解决办法
    JS中函数声明与函数表达式的异同
    javaScript实现归并排序
    js插入节点appendChild和insertBefore
    JS的事件冒泡和事件捕获
    js 停止事件冒泡 阻止浏览器的默认行为
    事件绑定的几种常见方式
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10841045.html
  • Copyright © 2011-2022 走看看