• [THÔNG BÁO] CẢNH BÁO LỪA ĐẢO MẠO DANH QUẢN TRỊ VIÊN
    Chào các thành viên GameVN,
    Dạo gần đây tình trạng lừa đảo scamming và phishing đang gia tăng. Ban quản trị GameVN xin lưu ý toàn bộ thành viên:
    KHÔNG/ ĐỪNG / CẤM cho bất kỳ ai tự xưng là quản trị viên của server vay tiền.
    Mọi hành vi lân la làm quen, tự tiện nhắn tin trên Discord, Facebook, Zalo hoặc các nền tảng mạng xã hội khác,
    núp bóng dưới danh nghĩa sinh hoạt của quản trị viên, đều có tỉ lệ rất, rất cao là lừa đảo.
    Nếu có tài khoản lạ add friend hoặc nhắn tin xin tiền dưới danh nghĩa admin:
    Block ngay
    Report ngay
    Không chuyển khoản, không cung cấp thông tin cá nhân


    Quản trị viên của forum và Discord server GameVN không có nhu cầu vay tiền thành viên.
    Không có lý do nào để admin chủ động kết bạn rồi xin tiền.
    Mọi thông báo chính thức chỉ được đăng trên kênh thông báo của server và topic chính thức trên forum.
    Tin nhắn riêng từ tài khoản lạ không phải thông báo của ban quản trị.
    Cảm ơn các bạn đã chú ý và cùng giữ cộng đồng an toàn.
    — Ban quản trị GameVN

    Tắt thông báo bằng nút X bên góc phải của bảng thông báo*

[C#]Rắc rối với RegEx trong DataGridView

  • Thread starter Thread starter anhtu07
  • Ngày gửi Ngày gửi

anhtu07

T.E.T.Я.I.S
Lão Làng GVN
Tham gia ngày
22/11/08
Bài viết
656
Reaction score
205
Em có 1 cái datagridview, hiện danh sách danh bạ, em muốn khi giới hạn số ký tự nhập vào ở cột HoTen là 30 ký tự thôi, nếu nhập hơn thì sẽ có thông báo, em dùng RegEx để so sánh cái chuỗi nhập vào nhưng khi nhập ít hơn 30 ký tự vẫn bị nhận thông báo nhắc nhở. Đây là code của em:
[C#]
Mã:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace demoRegExWithDGV
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'demoRegexDataSet.DanhBa' table. You can move, or remove it, as needed.
            this.danhBaTableAdapter.Fill(this.demoRegexDataSet.DanhBa);

        }

        private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            DataGridViewColumn currentCol = dataGridView1.Columns[e.ColumnIndex];
            DataGridViewCell currentCel = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
            if (currentCol.Name == "HoTen")
            {
                MessageBox.Show(currentCel.FormattedValue.ToString().Length.ToString());
                if (KiemTraChieuDaiChuoi(currentCel.FormattedValue.ToString()) == false)
                {
                    MessageBox.Show("Không được nhập nhiều hơn 30 ký tự");
                }
            }
        }

        private bool KiemTraChieuDaiChuoi(string p)
        {
            Regex ex = new Regex(@"^\w{1,30}$");
            return ex.IsMatch(p);
        }
    }
}

Đây là CSDL
mediafire.com/?wol418u8p8i9fro

cái RegEx của em zậy là đúng hay sai?
 
Mình không rành về C# nên phát biểu ngu tý:
Regex ex = new Regex(@"^\w{1,30}$") có thể chuyển thành Regex ex >= new Regex(@"^\w{1,31}$") không? hoặc Regex ex > new Regex(@"^\w{1,30}$")?
 
http://forum.gamevn.com/forumdisplay.php?154 :)
 
Không rành và cũng không có cảm tình về Regular Expression lắm, nhưng nếu bạn chỉ muốn giới hạn ký tự nhập vào GridView là 30 thôi thì sao không dùng string.lenght để bắt lỗi nhỉ?
 
^ Hình như hàm đó là string.length mà sư huynh X_X
Gõ kiểu sư huynh vào lập trình thì báo lỗi chết luôn áh :">
 
À uh do tớ type nhanh quá. Với lại code toàn gõ vài từ rồi Ctrl + space ra nên không có vụ báo lỗi đấy đâu =))
 
Em có 1 cái datagridview, hiện danh sách danh bạ, em muốn khi giới hạn số ký tự nhập vào ở cột HoTen là 30 ký tự thôi, nếu nhập hơn thì sẽ có thông báo, em dùng RegEx để so sánh cái chuỗi nhập vào nhưng khi nhập ít hơn 30 ký tự vẫn bị nhận thông báo nhắc nhở. Đây là code của em:
[C#]
Mã:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace demoRegExWithDGV
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'demoRegexDataSet.DanhBa' table. You can move, or remove it, as needed.
            this.danhBaTableAdapter.Fill(this.demoRegexDataSet.DanhBa);

        }

        private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            DataGridViewColumn currentCol = dataGridView1.Columns[e.ColumnIndex];
            DataGridViewCell currentCel = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
            if (currentCol.Name == "HoTen")
            {
                MessageBox.Show(currentCel.FormattedValue.ToString().Length.ToString());
                if (KiemTraChieuDaiChuoi(currentCel.FormattedValue.ToString()) == false)
                {
                    MessageBox.Show("Không được nhập nhiều hơn 30 ký tự");
                }
            }
        }

        private bool KiemTraChieuDaiChuoi(string p)
        {
            Regex ex = new Regex(@"^\w{1,30}$");
            return ex.IsMatch(p);
        }
    }
}

Đây là CSDL
mediafire.com/?wol418u8p8i9fro

cái RegEx của em zậy là đúng hay sai?

Mình test thử cái Regex của bạn thấy chạy đúng.

Nếu bạn nhập các ký tự đặc biệt thì nó sẽ hiện thông báo nhắc nhở.
 
Back
Top