Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式验证特定字符的字符串和精确长度的数字_C#_Regex - Fatal编程技术网

C# 使用正则表达式验证特定字符的字符串和精确长度的数字

C# 使用正则表达式验证特定字符的字符串和精确长度的数字,c#,regex,C#,Regex,目标:精确匹配10个混合大写字符(I、O和空格除外)和2到9之间的数字: 准确地说,以下是该值必须来自的有效集: {2',3',4',5',6',7',8',9',A',B',C',D',E',F',G',H',J',K',L',M',N',p',Q',R',S',T',U',V',W',X',Y',Z'} 我试过这个: ^[A-Z2-9][^IO01a-z ]{10}$ 但这11个长度将通过:9Pauuuh98Tye,而其中10个不会通过9PAUUH98TY 我还尝试: \b[A-Z2-9]

目标:精确匹配10个混合大写字符(I、O和空格除外)和2到9之间的数字:

准确地说,以下是该值必须来自的有效集:

{2',3',4',5',6',7',8',9',A',B',C',D',E',F',G',H',J',K',L',M',N',p',Q',R',S',T',U',V',W',X',Y',Z'}

我试过这个:

^[A-Z2-9][^IO01a-z ]{10}$
但这11个长度将通过:9Pauuuh98Tye,而其中10个不会通过9PAUUH98TY

我还尝试:

\b[A-Z2-9][^IO01a-z ]{10}\b
您可以使用排除不需要的集合:

\b([A-Z2-9](?<![IO])){10}\b
\b([A-Z2-9](?
选中以查看可用于排除不需要的测试集的测试用例:

\b([A-Z2-9](?<![IO])){10}\b
\b([A-Z2-9](?
查看测试用例,这样您可以做一些工作,但实际上,只列出您期望的字母是可以的

^[ABCDEFGHJKLMNPQRSTUVWXYZ2-9]{10}$
使用跨越,可以将其缩短为

^[A-HJ-NP-Z2-9]{10}$
这是“lazy”方法,但它在所有正则表达式风格中的工作方式都是一致的。例如,在.Net与JavaScript与其他语言中,负面外观有时可能表现不同

此外,在模式中使用
^
$
非常重要。它们将有助于确保整个输入字符串的字符数正确。

因此您可以做一些操作,但实际上,只列出您期望的字母是可以的

^[ABCDEFGHJKLMNPQRSTUVWXYZ2-9]{10}$
使用跨越,可以将其缩短为

^[A-HJ-NP-Z2-9]{10}$
这是“lazy”方法,但它在所有正则表达式风格中的工作方式都是一致的。例如,在.Net与JavaScript与其他语言中,负面外观有时可能表现不同

此外,在模式中使用
^
$
非常重要。它们将有助于确保整个输入字符串的字符数正确。

这样行吗

\b[A-HJ-NP-Z2-9]{10}\b
这行吗

\b[A-HJ-NP-Z2-9]{10}\b

您需要使用正则表达式吗?@gunr217感谢您的及时响应,是的,因为它将在中使用。您是否希望您的输入字符串是(当它有效时)10个字符,还是包含您正在检查的10个字符的更长条目?@gunr217我希望输入字符串正好是10个字符,不能多也不能少,并且必须来自列出的有效字符集(除I、O和空格或任何符号外,均为大写,数字范围为2到9。是否需要使用正则表达式?@gunr217感谢您的及时响应,是的,因为它将在中使用。您是否希望输入字符串为(当它有效时)10个字符,还是包含您正在检查的10个字符的更长条目?@gunr217我希望输入字符串正好是10个字符,不能多也不能少,并且必须来自列出的有效字符集(不包括I、O和空格,或任何符号,都是大写,数字从2到9。它可能看起来很愚蠢,但对于大多数情况,这是一个更一致、更简单的解决方案。很好,因为我是一个愚蠢但简单的人:)(顺便说一句,我希望你的答案得到接受,我更喜欢它)哈哈,无意冒犯。这本应该是一种恭维,但用一种轻描淡写的方式。这可能看起来很愚蠢,但在大多数情况下,这是一个更一致、更直截了当的解决方案。很好,因为我是一个愚蠢但直截了当的人:)(顺便说一句,我确实希望你的答案得到接受,我更喜欢它)哈哈,无意冒犯。这本应该是一种恭维,但用一种轻描淡写的方式。老实说,这有点让人困惑,如果你对字母表不太熟悉,你就看不出丢失了哪些字母…@HaoWu这确实让人困惑,因为我一开始确实错过了I和O,直到后来再次检查,发现某些字母是故意丢失的漏掉。老实说,这有点让人困惑,如果你对字母表不太熟悉,你就看不出丢失了哪些字母…@HaoWu这确实让人困惑,因为我一开始确实漏掉了I和O,直到后来再次检查,发现某些字母是故意漏掉的。