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

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图!点击连接查看

host=m18831658786&albumId=269674986&photoId=8926571224" rel="nofollow">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

 

VB.NET利用正則表達式巧妙限制字符输入的更多相关文章

  1. iOS_正則表達式

    iOS 正則表達式 正則表達式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).计算机科学的一个概念. 正則表達式使用单个字符 ...

  2. 7.4 Javascript:表单验证-揭开正則表達式的面纱

    用元字符匹配对应的字符类型 创建正則表達式有点像创建字符串字面量,仅仅只是正則表達式出如今一对"/"里 正則表達式中会用到一级元字符.用于连接字母与数字 "." ...

  3. PHP经常使用正則表達式汇总

    1.    平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用:  2.    "^\d+$" //非负整数(正整数 + 0)  3.    "^ ...

  4. Python——正則表達式(2)

    本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...

  5. 使用正則表達式的格式化与高亮显示json字符串

    使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...

  6. JavaScript正則表達式知识汇总

    Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...

  7. vb.net 正則表達式 取 固定格式的字符

    vb.net 正則表達式 取 固定格式的字符: 原始字符串:strSqlTmp="select * from A_TEST where a_data = '@1@' and b_link = ...

  8. Perl入门(四)Perl的正則表達式

    正則表達式是Perl语言的特色.主要的语法不是非常难,可是编写一个符合需求.高效的正則表達式.还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正則表達式内容/; 作用:查找匹配内容中是 ...

  9. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

随机推荐

  1. HTML-参考手册: Px、Em 换算工具

    ylbtech-HTML-参考手册: Px.Em 换算工具 1.返回顶部 1. Px.Em 换算工具 以下工具提供了em和px的换算工具. 第一个输入框:设置了网页默认的字体像素 (通常 16px) ...

  2. JAVA FileUtils(文件读写以及操作工具类)

    文件操作常用功能: package com.suning.yypt.business.report; import java.io.*; import java.util.*; @SuppressWa ...

  3. UartAssist串口调试工具

    第一步安装UartAssist 第二步打开UartAssist 界面为 我们将我们的wifi模块连接电脑, 查看的端口号通过计算机管理设备管理器进行查看 根据要求发送数据 就可以了

  4. jdbc打印sql语句-p6spy配置

    @Configuration public class P6SpyConfig { /** * P6数据源包装, 打印SQL语句 */ @Bean public P6DataSourceBeanPos ...

  5. SSH连接时,长时间不操作就断开的解觉办法

    1.第一次尝试失败 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 并将注释符号("#&qu ...

  6. delphi 获取本机IP地址和MAC地址 (转)

    unit NetFunc; interface uses SysUtils, Windows, dialogs, winsock, Classes, ComObj, WinInet, Variants ...

  7. php基本,输出 ,变量

    <?php   //php开头//单行注释/*多行注释*/ echo "hello word";//输出 方式连续输出多个字符串print"hello word&q ...

  8. js自动下载

    常用方法是利用a标签的属性download下载对应文件.图片等 <a href=".." download="...."></a> 但是 ...

  9. Android客户端转换php服务端获取的时间戳的转换

    今天在用JSON获取后台的数据的时候,发现一个奇怪的现象就是返回来的时间戳都是1970年这样的,很是纠结,最后发现时php和Java中时间的格式不一样造成的,所以我们本地客户端要做一个转换: /** ...

  10. fastJson中常用方法以及遇到的“坑”

    1.使用fastJson,首先引入fastJson依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> & ...