regex 如何使用正则表达式?

fdx2calv  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(199)

这里有一段代码。它只允许您在TextBox中输入东方字符(日语、中文等)。但如何做相反的事情呢?是否允许输入除这些字符以外的所有字符?

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (Regex.IsMatch(textBox1.Text, "[^\u2E80-\u9FFF]"))
    {
        textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
        textBox1.SelectionStart = textBox1.TextLength;
    }
}
f3temu5u

f3temu5u1#

要允许输入除东方字符(日语、中文等)以外的所有字符,可以修改正则表达式以匹配不在指定Unicode范围内的任何字符。您可以通过将正则表达式模式从**"[^\u2E80-\u9FFF]”更改为“[\u0000-\u2E7F\u9FFF-\uFFFF]”**来完成此操作。
下面是修改后的代码,允许输入除东方字符以外的所有字符:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (Regex.IsMatch(textBox1.Text, "[\u0000-\u2E7F\u9FFF-\uFFFF]"))
    {
        textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
        textBox1.SelectionStart = textBox1.TextLength;
    }
}

此代码使用求反字符类“[^\u2E80-\u9FFF]”来匹配不在指定Unicode范围内的任何字符。范围现在反转为**[\u0000-\u2E7F\u9FFF-\uFFFF]**以匹配不在东方字符范围内的任何字符。如果输入字符串包含任何东方字符,则代码将从TextBox中删除最后一个字符,并将光标设置到剩余文本的末尾。

相关问题