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图!点击连接查看
总结
正則表達式的特点是:
1.灵活性、逻辑性和功能性非常的强;
2.能够迅速地用极简单的方式达到字符串的复杂控制效果
3.对于刚接触的人(我)来说,比較晦涩难懂。
正則表達式博大精深,能够做到很多你想不到的事情,赶紧试试吧!
很多其它了解,请点击:http://baike.baidu.com/view/94238.htm?
fr=aladdin
VB.NET利用正則表達式巧妙限制字符输入的更多相关文章
- iOS_正則表達式
iOS 正則表達式 正則表達式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).计算机科学的一个概念. 正則表達式使用单个字符 ...
- 7.4 Javascript:表单验证-揭开正則表達式的面纱
用元字符匹配对应的字符类型 创建正則表達式有点像创建字符串字面量,仅仅只是正則表達式出如今一对"/"里 正則表達式中会用到一级元字符.用于连接字母与数字 "." ...
- PHP经常使用正則表達式汇总
1. 平时做站点常常要用正則表達式,以下是一些解说和样例,仅供大家參考和改动使用: 2. "^\d+$" //非负整数(正整数 + 0) 3. "^ ...
- Python——正則表達式(2)
本文译自官方文档:Regular Expression HOWTO 參考文章:Python--正則表達式(1) 全文下载 :Python正則表達式基础 ======================== ...
- 使用正則表達式的格式化与高亮显示json字符串
使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...
- JavaScript正則表達式知识汇总
Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...
- vb.net 正則表達式 取 固定格式的字符
vb.net 正則表達式 取 固定格式的字符: 原始字符串:strSqlTmp="select * from A_TEST where a_data = '@1@' and b_link = ...
- Perl入门(四)Perl的正則表達式
正則表達式是Perl语言的特色.主要的语法不是非常难,可是编写一个符合需求.高效的正則表達式.还是有一些挑战的. Perl的三种匹配模式 1.查找 语法:m/正則表達式内容/; 作用:查找匹配内容中是 ...
- python 学习笔记 10 -- 正則表達式
零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...
随机推荐
- HTML-参考手册: Px、Em 换算工具
ylbtech-HTML-参考手册: Px.Em 换算工具 1.返回顶部 1. Px.Em 换算工具 以下工具提供了em和px的换算工具. 第一个输入框:设置了网页默认的字体像素 (通常 16px) ...
- JAVA FileUtils(文件读写以及操作工具类)
文件操作常用功能: package com.suning.yypt.business.report; import java.io.*; import java.util.*; @SuppressWa ...
- UartAssist串口调试工具
第一步安装UartAssist 第二步打开UartAssist 界面为 我们将我们的wifi模块连接电脑, 查看的端口号通过计算机管理设备管理器进行查看 根据要求发送数据 就可以了
- jdbc打印sql语句-p6spy配置
@Configuration public class P6SpyConfig { /** * P6数据源包装, 打印SQL语句 */ @Bean public P6DataSourceBeanPos ...
- SSH连接时,长时间不操作就断开的解觉办法
1.第一次尝试失败 修改/etc/ssh/sshd_config文件, 找到 ClientAliveInterval 0 ClientAliveCountMax 3 并将注释符号("#&qu ...
- delphi 获取本机IP地址和MAC地址 (转)
unit NetFunc; interface uses SysUtils, Windows, dialogs, winsock, Classes, ComObj, WinInet, Variants ...
- php基本,输出 ,变量
<?php //php开头//单行注释/*多行注释*/ echo "hello word";//输出 方式连续输出多个字符串print"hello word&q ...
- js自动下载
常用方法是利用a标签的属性download下载对应文件.图片等 <a href=".." download="...."></a> 但是 ...
- Android客户端转换php服务端获取的时间戳的转换
今天在用JSON获取后台的数据的时候,发现一个奇怪的现象就是返回来的时间戳都是1970年这样的,很是纠结,最后发现时php和Java中时间的格式不一样造成的,所以我们本地客户端要做一个转换: /** ...
- fastJson中常用方法以及遇到的“坑”
1.使用fastJson,首先引入fastJson依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> & ...