实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用? 分不多,谢谢朋友帮忙!

我一以前没用过正则表达式,再加上天资愚钝,所以试了半天还是没弄出来。。。中文的正则表达式为^[\u4e00-\u9fa5]$,希望路过的朋友留下的你看法,越详细越好。再次谢谢大家!

给窗体的文本框加KeyPress事件(如以下textBox1_KeyPress)
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}

测试过了,只能输入汉字,如果输入别的,没有反应。
以上若还有疑问,可以Hi我。追问

首先非常感谢你!你所说的方法的确实现了文本框只有输入中文汉字才有效,但还是存在一点问题,那就是键盘上的Backspace键也失效了。我百度了并未发现Backspace有正则表达式,不知道这个问题如何处理。再次谢谢你的回答。

追答

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5]$");
if (!rg.IsMatch(e.KeyChar.ToString()) && e.KeyChar != '\b') //'\b'是退格键
{
e.Handled = true;
}
}
或者
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Regex rg = new Regex("^[\u4e00-\u9fa5\b]$"); //\b是退格键
if (!rg.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}

已经测试通过,以上,若还有疑问,可以Hi我。

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-11
var str="***" //文本框中的文本
var patt=@"^[\u4e00-\u9fa5]+$" //这是要匹配的模式
var r=new Regex(patt);
var pasFlag=r.IsMatch(str); //true 标识匹配规定格式,false 不匹配
相似回答