如何检测正则表达式中的确切长度

Che*_*rra 9 regex

我有两个正则表达式来验证输入的值.

一个允许任何长度的Alpha-Numeric值:

@"^\s*(?<ALPHA>[A-Z0-9]+)\s*"
Run Code Online (Sandbox Code Playgroud)

而另一个只允许数值:

@"^\s*(?<NUM>[0-9]{10})"
Run Code Online (Sandbox Code Playgroud)

如何获得长度为11的数字字符串,不被NUM正则表达式所捕获.

Tim*_*uri 16

我想你想说的是你不想允许超过10位数.所以,只需$在末尾添加一个指定正则表达式的结尾.

例: @"^\s*(?[0-9]{10})$"


这是我原来的答案,但我想我读得太准确了.

string myRegexString = `@"(?!(^\d{11}$)` ... your regex here ... )";
Run Code Online (Sandbox Code Playgroud)

这写着"虽然前方不是,但是开始,11位数,结束"


JP *_*oto 5

如果它是单行,您可以指定您的匹配必须发生在行尾,就像在 .net 中这样......

^\s*([0-9]{10})\z
Run Code Online (Sandbox Code Playgroud)

这将接受 1234567890 但拒绝​​ 12345678901。