请教一个正则表达式问题,关于数字验证

xzm2000 2004-09-02 05:50:45
现在有这样的需求,用户输入5位的数字的串,可以输入一个或多个串,用分号";"分割,如

12345
12345;67890
12345;67890;98765

请问怎样用正则表达式验证这些数字的正确性?
...全文
191 点赞 收藏 9
写回复
9 条回复
allan1031 2004年09月03日
(\d{5})|(\d{5}\;\d{5})

修改成
(\d{5})|(\d{5}\*+;+\d{5}*)
应该就可以了
回复 点赞
fason 2004年09月03日
<script>
var re = /^(\d{5})|(\d{5}\;\d{5})$/
alert(re.test("12345;12345"));//true
</script>

是可以的
回复 点赞
xzm2000 2004年09月02日
谢谢,我有一个问题很不明白
为什么
(\d{5}\;\d{5})可以匹配12345;12345
(\d{5})可以匹配12345
但是(\d{5})|(\d{5}\;\d{5})却只能匹配12345,而不能匹配12345;12345
只有前面的(\d{5})可以匹配,如果把前面的(\d{5})换成一个字符,如
(\;)|(\d{5}\;\d{5}),这样即可以匹配字符";",又可以匹配12345;12345了

回复 点赞
fason 2004年09月02日
var re = /^\d{5}(\|\d{5})*$/;//要用转义字符

不需要用?:预查
回复 点赞
mjpclab 2004年09月02日
着表示5位数字开头或 5位数字加分号结尾,你的意图可能是
^(\d{5}|\d{5};)$ |的优先级比较高
回复 点赞
zzzxxxcccvvv 2004年09月02日
<stroe>
回复 点赞
xzm2000 2004年09月02日
谢谢,请问一下,为什么我用下面的正则表达式不能正确验证
^\d{5}|\d{5};$
12345;12345
这个字符串,我想用|这个表示或者,却不行
回复 点赞
mjpclab 2004年09月02日

var re = /^[1-9]\d{4}(?:;[1-9]\d{4})*$/;
回复 点赞
fason 2004年09月02日
<script>
var re = /^\d{5}(;\d{5})*$/;
alert(re.test("12345"));
alert(re.test("12345;67890"));
alert(re.test("12345;67890;98765"));
alert(re.test("12345;67890;987;65"));
</script>
回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告