空字符串或10位数的正则表达式

And*_*ray 7 c# regex

要启动:我刚开始用的正则表达式,和我有一个真正艰难的时间了解发生了什么事情他们.只是一个单挑.

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

"^[0-9X]{10}$"
Run Code Online (Sandbox Code Playgroud)

......但不是'空串或'部分.我想这会是这样的:

"^[]$|^[0-9X]{10}$"
Run Code Online (Sandbox Code Playgroud)

显然,这是不行的,但我不知道如何写一些东西,确实,即使有对此事相当多的话题.

问题:

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

B)请解释它究竟是如何工作的.这并不是说我没有尝试学习(我确实认为它们^$是精确字符串匹配的锚点,那|就是OR运算符...),这只是正则表达式显然不适合我. .yet,我遇到了必须使用它们的情况.

Wes*_*and 22

(^$)|(^\d{10}$)
Run Code Online (Sandbox Code Playgroud)

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

我不知道您的X是什么,除非您正在寻找十六进制字符串,如果是这种情况,您将要执行以下操作:

(^$)|(^[0-9a-fA-FxX]{10}$)
Run Code Online (Sandbox Code Playgroud)