如何使用正则表达式匹配中间有连字符的固定长度数字?

8

我是一个正则表达式的新手,想知道如何编写一个正则表达式来实现以下功能:

验证像123-0123456789这样的字符串。仅允许数字和连字符。同时,验证连字符前有3个数字字符,连字符后有10个字符。

正则表达式: /^\d{3}-\d{10}$/

这是一个非常好的正则表达式参考网站:http://www.regular-expressions.info/ - splash
3个回答

11
给出的答案无法处理更多数字的字符串(例如“012-0123456789876”),因此需要使用以下方法:
str.match(/^\d{3}-\d{10}$/) != null;
或者
/^\d{3}-\d{10}$/.test(str);

7
尝试一下这个:
^\d{3}-\d{10}$

这句话的意思是:只接受3位数字,然后是一个连字符,之后再接受10位数字。

1
除非正则表达式与 ...123456-123456789123... 匹配,否则您必须锚定它。 - Toto

2
当然,这应该可以运行:
var valid = (str.match(/^\d{3}-\d{10}$/) != null);

例子:

> s = "102-1919103933";
"102-1919103933"
> var valid = s.match(/\d{3}-\d{10}/) != null;
> valid
true
> s = "28566945";
"28566945"
> var valid = s.match(/\d{3}-\d{10}/) != null;
> valid
false

你必须锚定你的正则表达式,除非它匹配 ...123456-123456789123... - Toto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接