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

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

12345
12345;67890
12345;67890;98765

请问怎样用正则表达式验证这些数字的正确性?
...全文
221 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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>

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧