正则表达式快速验证工具

来源:互联网 发布:mac单机游戏怎么安装 编辑:程序博客网 时间:2024/06/15 18:18

正则表达式快速验证工具

Posted on 2009-01-05 21:39 wknight 阅读(278) 评论(0)  编辑 收藏 网摘 所属分类: WinForm

   刚刚在codeproject上面逛,看见David Veeneman以前写的一篇验证正则的文章很不错,小巧快捷,安装后,可以快速的编写正则表达式,并填入验证文本进行验证。思路:将正则表达式文本作为Regex构造函数的一个参数,来创建一个Regex的实例,如果正则表达式错误,Regex类将抛出一个参数无效异常,利用try...catch捕获这个异常,将异常信息作为消息显示给用户,如果正则表达式正确,再继续将测试文本和正则进行匹配,并提示成功信息。

  见图:

测试文本匹配正则失败界面

测试文本匹配正则成功的界面

正则表达式输入不正确时的异常信息

源代码分析:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace RegexTester
{
    
public partial class Form1 : Form
    {
        
private Regex regex = null;

        
public Form1()
        {
            InitializeComponent();
        }

        
private void RegexText_TextChanged(object sender, EventArgs e)
        {
            
// 没有正则表达式输入
            if (RegexText.Text == String.Empty)
            {
                RegexText.BackColor 
= Color.White;
                TestText.BackColor 
= Color.White;
                Message.Text 
= String.Empty;
                
return;
            }

            
// 验证正则
            try
            {
                regex 
= new Regex(RegexText.Text);
                Message.Text 
= String.Empty;
                RegexText.BackColor 
= Color.PaleGreen;
                
this.ValidateTestBox();
            }
            
catch (ArgumentException error)
            {
                Message.Text 
= error.Message;
                RegexText.BackColor 
= Color.LightPink;
            }
        }

        
private void TestText_TextChanged(object sender, EventArgs e)
        {
            
this.ValidateTestBox();
        }

        
private void ValidateTestBox()
        {
            
// 如果没有正则表达式即跳过验证
            if (RegexText.Text == String.Empty)
            {
                TestText.BackColor 
= Color.White;
                
return;
            }

            
// 验证正则
            bool IsMatch = regex.IsMatch(TestText.Text);
            
if (IsMatch)
            {
                Message.Text 
= "匹配成功";
                Message.ForeColor 
= Color.Green;
                TestText.BackColor 
= Color.PaleGreen;
            }
            
else
            {
                Message.Text 
= "匹配失败";
                Message.ForeColor 
= Color.Red;
                TestText.BackColor 
= Color.LightPink;
            }
        }

        
private void buttonClearAll_Click(object sender, EventArgs e)
        {
            RegexText.Clear();
            TestText.Clear();
        }

        
private void buttonClearRegex_Click(object sender, EventArgs e)
        {
            RegexText.Clear();
        }

        
private void buttonClearTest_Click(object sender, EventArgs e)
        {
            TestText.Clear();
        }
    }
}
原创粉丝点击