限制字符串输入——正則表達式(VB.NET)

1、概述

在做机房收费系统的时候,差点儿全部的窗口上都存在着文本框或者组合框,当用户进行操作的时候。首先要推断是否为空,然后再对各种属性进行推断,比方;卡号、学号、金额等仅仅能输入数字,有些信息仅仅能输入字母,或者将一些信息的输入设为仅仅能输入数字和字母。举个样例。我们注冊邮箱的时候。就会有一些特定字符的设置:

以下是163邮箱注冊的页面

在我们做机房收费系统时。假设用常规的方法,直接用ASCII码进行设置的话,就感觉有点复杂,如今我们一起来认识认识程序猿必备的七种技能之中的一个的“正則表達式”。

2、什么是正則表達式?

首先看一张漫画:

正則表達式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

举个样例:仅仅能输入数字:“^[0-9]*$”。

仅仅能输入汉字:“^[\u4e00-\u9fa5]{0,}$”。

仅仅能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”。

3、怎么使用正則表達式?

以下就一起来看看怎么使用它。

咱们以加入新用户的窗口为例:

    Public Const C_REGULAR_LenNum = "^[A-Za-z0-9]+$"         ‘仅仅能输入由数字和26个英文字母组成的字符
    Public Const C_REGULAR_NumLimit = "^\\d{6,16}$"          ‘仅仅能输入6至16位的数字。
    ‘‘‘ <summary>
    ‘‘‘ 检測输入字符串是否匹配正則表達式项
    ‘‘‘ </summary>
    ‘‘‘ <param name="strPattern">正則表達式项</param>
    ‘‘‘ <param name="TextReg">输入字符串</param>
    ‘‘‘ <returns>返回结果是否匹配</returns>
    ‘‘‘ <remarks><span style="font-family:KaiTi_GB2312;">2014年8月28日16:02:20</span></remarks>
    Public Function funCheckRegular(ByVal strPattern As String, TextReg As String)
        Return Regex.IsMatch(TextReg, strPattern)
    End Function
    ‘‘‘ <summary>
    ‘‘‘ 详细运行的推断函数,推断是否输入数字
    ‘‘‘ </summary>
    ‘‘‘ <param name="arrayControl">结构体数组</param>
    ‘‘‘ <returns>True则表示匹配,false则不匹配</returns>
    ‘‘‘ <remarks>2014-07-09 10:30:24</remarks>
    Public Function CheckRegular(ByVal arrayControl() As Term, ByVal strPattern As String, Warning As String) As Boolean
        Dim termControl As Term                                      ‘声明一个Term类型变量termControl

        ‘遍历结构体数组中的全部元素。假设控件文本输入不合法。则给出对应返回值
        For Each termControl In arrayControl                         ‘遍历结构体数组中全部元素
            If TypeOf termControl.controlSub Is TextBox Then         ‘推断控件是否为文本框
                If termControl.controlSub.Text.Trim <> "" Then       ‘推断文本框内容是否为空。不为空往下运行
                    If funCheckRegular(strPattern, termControl.controlSub.Text) = False Then
                        MessageBox.Show(termControl.strText + "栏 - -!

" + Warning, "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        termControl.controlSub.Focus()               ‘为空控件得到焦点
                        Return False
                        Exit Function
                    End If
                End If
            End If
        Next
        Return True
    End Function

以下的代码是在界面层(UI)怎样调用:

    Public Sub RdimStrNum()
        ReDim Preserve arrayControl(0)  ‘重定义数组维数
        ‘初始化数组
        arrayControl(0) = New Term(txtUserID, "username")
    End Sub

    Public Sub RdimNum()
        ReDim Preserve arrayControl(1)  ‘重定义数组维数
        ‘初始化数组
        arrayControl(0) = New Term(txtUserPWD, "password")
        arrayControl(1) = New Term(txtConfirm, "确认password")
    End Sub
        ‘推断用户输入是否合法(数字和字母)
        Call RdimStrNum()
        Dim strPattern = C_REGULAR_LenNum        ‘正則表達式
        Dim Warning As String = "仅仅能输入由数字和26个英文字母组成的字符"
        If CheckRegular(arrayControl, strPattern, Warning) = False Then
            Exit Sub
        End If

        ‘推断用户输入是否合法(数字)
        Call RdimNum()
        Dim pattern = C_REGULAR_NumLimit    ‘正則表達式
        Dim Warn As String = "请输入6至16位数字"
        If CheckRegular(arrayControl, pattern, Warn) = False Then
            Exit Sub
        End If

3、结束语

在程序猿日常工作中。数据处理占领了相当的比重。而全部的数据之中文本又占领了相当的比重。文本可以被人理解、具有良好的透明性,利于系统开发、測试和维护等就必须要有一定规律遵循一种规则。而正則表達式正是我们所须要的,它提供给我们强大的字符串处理的能力。

转载请注明出处:http://blog.csdn.net/zlts000/article/details/38021335

时间: 2024-10-11 23:22:37

限制字符串输入——正則表達式(VB.NET)的相关文章

JAVA学习第六十五课 — 正則表達式

正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告知此字符串是否匹配给定的正則表達式. regex,就是给定的正則表達式 public static void checkQQ() { //第一位是数字1-9,第二位以后是0-9,除去第一位数剩下数字位数范围是5到8位 String regex = "[1-9][0-9]{5,8}";//正

python进阶十_正則表達式(一)

近期状态一直不太好,至于原因.怎么说呢,不好说,总之就是纠结中覆盖着纠结.心思全然不在点上.希望能够借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想.假设真的是我自己的问题呢,曾经我常常跟别人说,千万不要怀疑自己.由于非常清楚一旦连自己都变的不可信.那这个世界就太疯狂了,当一遍一遍的问我,如今连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到如今居然须要自己去说服自己,何其的悲哀~ 一.正則表達式基础 1.基本概念 正則表達式是计算机科学的一个概念.正則表達式使用单个字符串来

Python——正則表達式(2)

本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ====================================================================================== 3.使用正則表達式 如今.我们已经学习了一些简单的正則表達式,但我们应该怎么在Python中使用它们呢?re模块提供了一个连接正則表達式引擎的接口,同意你将RE编译成对象并利

JavaScript使用正則表達式

2.0 简单介绍 正則表達式是能够用来查找与给定模式匹配的文本的搜索模式.比如,在上一章中,我们在一个较长的字符串中查找子字符串Cookbook: var testValue = "This is the Cookbook's test string"; var subsValue = "Cookbook"; var iValue = testValue.indexOf(subsValue); //返回值12.即子字符串的索引 这段代码有效.由于我们要查找一个严格的

UltraEdit正則表達式介绍及实例

前几天,有个将Excel中的数据导入到数据库中的需求.原本想到用程序读取Excel中的数据并存储到数据库中,但经一哥们的提醒,说用 EditPlus或UltraEdit这种工具直接将数据拼凑成SQL插入语句更easy方便,也不用写不论什么代码.因为我本人使用UltraEdit,故考 虑用UltraEdit的正則表達式来做这件事,以下是这种一个过程. 如果导入的表字段为:name,email. introduce.在Excel中的数据相应的也是这种字段.值得注意的是:在excel中的数据,比方in

正則表達式使用帮助

7. 正則表達式匹配规则 7.1 基本模式匹配 一切从最主要的開始.模式.是正规表达式最主要的元素.它们是一组描写叙述字符串特征的字符.模式能够非常easy,由普通的字符串组成.也能够非常复杂.往往用特殊的字符表示一个范围内的字符.反复出现.或表示上下文.比如: ^once 这个模式包括一个特殊的字符^,表示该模式仅仅匹配那些以once开头的字符串.比如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYor

Java正則表達式入门

众所周知,在程序开发中,难免会遇到须要匹配.查找.替换.推断字符串的情况发生,而这些情况有时又比較复杂,假设用纯编码方式解决,往往会浪费程序猿的时间及精力.因此,学习及使用正則表達式,便成了解决这一矛盾的主要手段. 大 家都知道,正則表達式是一种能够用于模式匹配和替换的规范,一个正則表達式就是由普通的字符(比如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描写叙述在查找文字主体时待匹配的一个或多个字符串.正則表達式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.  自从jdk1

正則表達式截取字符串两字符间的内容

一.问题 我有个字符串比方a="abcdanmcadedcdeefako"那么我怎么能得到一个数组,当中数组的各项是字母a和c的中间字符.即第一项是"b"第二项"nm"第三项"ded" 二.答案 以下是C#写的,java也能够适用 static void Main(string[] args) { string a = "abcdanmcadedcdeefako"; Regex reg = new Rege

利用正則表達式排除特定字符串

本文转载自:http://www.cnblogs.com/wangqiguo/archive/2012/05/08/2486548.html 查找不以baidu开头的字符串 baidu.comsina.com.cn 正则:^(? !baidu).*$  匹配结果就是第2行.也就是第1行被排除了这里使用了零宽度断言(?!exp),注意.我们有一个向前查找的语法(也叫顺序环视)  (?=exp)(?=exp) 会查找exp之前的[位置]假设将等号换成感叹号.就变成了否定语义,也就是说查找的位置的后面