iT邦幫忙

DAY 18
5

看範例學C#系列 第 18

看範例學C#-18 Regular Expression 規則運算式

  • 分享至 

  • xImage
  •  

規則運算式範例
規則運算式可以很容易的幫我們分析、比對字串,實在是很強大的一個功能
要使用規則運算式需(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);
        }
    }
}


全系列文章列表


上一篇
看範例學C#-17 驗證身份證字號
下一篇
看範例學C#-19 自製簡易IE瀏覽器
系列文
看範例學C#30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
krarm
iT邦好手 1 級 ‧ 2011-10-15 00:28:26

<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?????

thc iT邦研究生 5 級 ‧ 2011-10-15 01:28:31 檢舉

方便使用啊,這樣 有多組 運算式 ,直接傳參數才好用

krarm iT邦好手 1 級 ‧ 2011-10-15 18:17:04 檢舉

何不考慮 static constructor?

Gifer iT邦新手 5 級 ‧ 2019-11-13 13:12:20 檢舉

我有另外參考 下列的方式來判斷MAIL格式 ,因為範例我執行會一直說格式錯誤
https://docs.microsoft.com/zh-tw/dotnet/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format

我要留言

立即登入留言