規則運算式範例
規則運算式可以很容易的幫我們分析、比對字串,實在是很強大的一個功能
要使用規則運算式需(Regular Expression)在程式開頭 using System.Text.RegularExpressions;
本範例使用isright(string s, String right) 來比對 字串 跟運算式是否相符
符合的話傳回true,否則傳回false
想更了解規則運算式語法可以參考以下三篇文章
http://msdn.microsoft.com/zh-tw/library/ae5bf541
http://www.dotblogs.com.tw/johnny/archive/2010/01/25/13301.aspx#24159
http://www.dotblogs.com.tw/johnny/archive/2010/03/02/13855.aspx
以下為本例原始碼
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace ex18
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.AcceptButton = button1;//按下enter就觸發button click事件
}
private void button1_Click(object sender, EventArgs e)
{
txtEmail.Text = txtEmail.Text.Trim();
if (isright(txtEmail.Text, @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"))//符合運算式
{
errorProvider1.SetError(txtEmail, "");
MessageBox.Show("有效的電子信箱");
}
else
{
errorProvider1.SetError(txtEmail, "輸入的電子信箱不正確");
}
}
public Boolean isright(string s, String right) //定義正則表達式函數
{
Regex Regex1 = new Regex(right, RegexOptions.IgnoreCase);
return Regex1.IsMatch(s);
}
}
}
<pre class="c" name="code">if (isright(txtEmail.Text, @"^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"))//符合運算式
...
public Boolean isright(string s, String right) //定義正則表達式函數
{
Regex Regex1 = new Regex(right, RegexOptions.IgnoreCase);
return Regex1.IsMatch(s);
}
為甚麼還要多寫一個isright的function?????
方便使用啊,這樣 有多組 運算式 ,直接傳參數才好用
何不考慮 static constructor?
我有另外參考 下列的方式來判斷MAIL格式 ,因為範例我執行會一直說格式錯誤
https://docs.microsoft.com/zh-tw/dotnet/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format