C# 用于验证带有一个空格和一个可选特殊字符的数字的正则表达式
有人能告诉我如何用一个空格验证数字序列吗?最后会有一个可选的特殊字符,比如“#”,后面再跟5位数字 例如: 123456587#2584 我试过了C# 用于验证带有一个空格和一个可选特殊字符的数字的正则表达式,c#,.net,regex,C#,.net,Regex,有人能告诉我如何用一个空格验证数字序列吗?最后会有一个可选的特殊字符,比如“#”,后面再跟5位数字 例如: 123456587#2584 我试过了 (0(?:\d{0,11}|(?=\d* \d*$)[\d ]{0,12})) 但我不知道如何在末尾添加可选的“#”,后面跟着数字。这应该可以解决问题 /^\d+\s\d+(?:#\d+)?$/ 在电视上看 ^字符串的开头 \d+一个或多个数字 \这是任何空格字符 \d+一个或多个数字 (?:开始非捕获组 #文字“#”字符 \d+一个或多个数字
(0(?:\d{0,11}|(?=\d* \d*$)[\d ]{0,12}))
但我不知道如何在末尾添加可选的“#”,后面跟着数字。这应该可以解决问题
/^\d+\s\d+(?:#\d+)?$/
在电视上看
^字符串的开头
\d+一个或多个数字
\这是任何空格字符
\d+一个或多个数字
(?:开始非捕获组
#文字“#”字符
\d+一个或多个数字
)结束非捕获组
$字符串结尾
编辑
匹配以
0
开头的字符串,后跟最多11个数字或空格。然后是一个可选的#
,后面最多有5个数字。这个问题不是很清楚,但梅塞克的建议实际上回答了您关于如何在末尾添加可选的“#”标记和一些数字的问题,所以您应该尝试一下。(特别是,(?:#\d+)$
是正则表达式的相关部分;(?:#\d{0,5})$
将确保存在0到5位数字。)
但是,用于确保在可选“#”之前正好有1个空格且最多12位数字的正则表达式是不正确的。正如所写的那样,前瞻是没有意义的,因为\d{0,11}
将匹配任何字符串开头的0宽度字符串(因为这相当于0个数字)。您需要的是类似于/^(?:[\d\s]{1,13}$)\d*\s\d*$/
的东西。这将检查以确保存在正确数量的字符,并且它们都是数字或空格,然后检查字符串中只有一个空格。这里有一点冗余,但这应该不是问题。另外,请注意,为了清晰起见,我使用了\s
而不是空格字符,但请注意,这将匹配制表符和其他空格,这可能不是您想要的。{1,13}
的数字计数假定字符串由一个完全没有数字的空格组成是合法的,但空字符串是非法的;如果这不是正确的假设,请调整括号中的值
最后,为了将上面的正则表达式与可选标记的正则表达式结合起来以确保适当的空间和数字计数,您需要更改前视,以便它能够匹配#
以及$
:它应该是/^(?:[\d\s]{1,13}(#|$)\d*\s\d*(#\d{0,5})/
(请注意,我还没有真正测试过上述正则表达式,所以我不能肯定100%代码中的<代码>(μi $)/代码>将与所有实现一起工作。如果没有,则可以用冗余<代码>(α\ d {0,5})代替:< /p> @ MACEK,感谢上面提到的正则表达式(上面提到的)。最多可接受12个带一个空格的数字(未定义空格)(例如:1236 5458)。但我只想添加一个额外的可选字符,后跟上面的一个字符(例如:1236 5458#1236),这样就可以验证这两个字符的正确性。如何做到这一点?@macek它不完全是上面提到的12个字符。除可选字符(#)外,它最多可以接受12个字符,后跟0-5位。@macek-非常感谢。我所要做的就是:最多12个字符,将允许一个空格(在未定义的点上只有一个空格),必须以0开头,然后是一个可选的扩展名,长度不超过5位,不包括#sign@macek-非常感谢您的宝贵意见。在上述意见中,我已经提到了我的全部需求,你能帮我实现吗?
/^0[\d\s]{,11}(?:#\d{,5}?$/