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

时间:2009-04-24 20:02:50

标签: regex

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

允许任意长度的Alpha-Numeric值:

@"^\s*(?<ALPHA>[A-Z0-9]+)\s*"

另一个只允许数值:

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

如何获得长度为11的数字字符串,而不是NUM正则表达式。

8 个答案:

答案 0 :(得分:15)

我认为你想说的是你不想允许超过10位数。因此,只需在末尾添加$即可指定正则表达式的结束。

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


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

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

读取“虽然未提前,但是开始,11位数,结束”

答案 1 :(得分:4)

如果是单行,您可以指定您的匹配必须发生在行尾,例如.net ...

^\s*([0-9]{10})\z

这将接受1234567890,但拒绝12345678901。

答案 2 :(得分:2)

您的意思是想要匹配最多 10位数吗?试试这个:

@"^\s*[0-9]{1,10}\s*$"

答案 3 :(得分:0)

在长度为10的字符串后匹配非数字的内容。我的正则表达式并不是那么好,但是我认为你已经设置了它来捕获一个长度为10的数字字符串,但由于你之后没有匹配任何东西,长度为11的字符串也会匹配。尝试超出数字末尾的匹配,你会很好。

答案 4 :(得分:0)

你可以尝试交替吗?

^\s*(?\d{1,10}|\d{12,})

答案 5 :(得分:0)

这应该只匹配10位数字,并允许在数字前后任意数量的空格。

非捕获版本:(仅匹配,不存储匹配的数字)

^\s*(?:\d{10})\s*$

捕获版本:(匹配的数字在子组1中可用,为$ 1或\ 1)

^\s*(\d{10})\s*$

答案 6 :(得分:0)

如果您只想匹配10位数字的数字,只需使用$添加尾随锚点,如下所示:

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

这将匹配任何正好10位数的数字(两边都有可选空格)。

答案 7 :(得分:0)

&#13;
&#13;
var pattern =/\b[0-9]{10}$\b/;

// the b modifier is used for boundary and $ is used for exact length
&#13;
&#13;
&#13;