7

开始:我刚开始使用正则表达式,我很难理解它们发生了什么。只是一个提示。

对于一个项目,我正在尝试开发一个正则表达式,它采用 A)一个空字符串(在 C# 中,“”)或 B)十 (10) 位数字。我已经能够弄清楚如何完成 10 位数字部分:

"^[0-9X]{10}$"

...但不是“空字符串或”部分。我想会是这样的:

"^[]$|^[0-9X]{10}$"

显然那是行不通的,但我不知道如何写一些这样的东西即使有很多关于这个问题的话题。

问题:

A)如果给定的字符串是 string.Empty(而不是“”)或正好是 10 位,那么将返回 true 的正则表达式是什么?

B)请解释它是如何工作的。并不是我没有尝试学习(我确实发现这些^$是用于精确字符串匹配的锚点,那|就是 OR 运算符……),只是正则表达式对我来说显然不是自然而然的…… .然而,我处于必须使用它们的情况。

4

4 回答 4

24
(^$)|(^\d{10}$)

第一个选项匹配空字符串,第二个选项匹配 10 位数字。

我不知道你的 X 是做什么用的,除非你正在寻找一个十六进制字符串,如果是这样的话,你会想要执行以下操作:

(^$)|(^[0-9a-fA-FxX]{10}$)
于 2013-01-22T17:13:30.937 回答
3
^$|^[0-9X]{10}$

^意味着匹配开始,$意味着匹配结束,因为中间没有任何内容,什么都不匹配。如果有什么,这不匹配

|是交替运算符,在备选之间

于 2013-01-22T17:09:28.190 回答
1
 string a = "0123456789";
 string b = "";
 string reg = @"^(|\d{10})$";

 if ( Regex.IsMatch( a, reg ) && Regex.IsMatch( b, reg ) ) {
     Console.WriteLine( "Matched" );
 }

\d相当于[0-9]
{10}是 十次 正好
|是 OR 运算符
^是开始,$是结束
括号将 OR 运算限制为空或开始和结束之间的十位数字。

于 2013-01-22T17:26:03.483 回答
0

试试下面的正则表达式......它会工作......

        if (Regex.IsMatch(textBox1.Text, @"^(?!\s*$).+")) //Check Not Empty String 
        {
            if (Regex.IsMatch(textBox1.Text, @"^\d{10}$")) // Check ten digits - Not allowed Alphanumeric
            {
                MessageBox.Show("find Ten digits");
            }
            else
            {
                    MessageBox.Show("Error");
            }
        }
        else
        {
            MessageBox.Show("Empty String Found");
        }
于 2013-01-22T17:13:56.057 回答