请帮看看下面的正则表达式为什么不对?

ynduanlian 2014-02-11 11:34:30
用正则表达式验证一个多行文本框中的输入,合法的输入包括两种情况:
以1或2开头的8位数字,
或1或2开头的8位数字+","+1至3位数字
如:
20120405
20120102,1
20130506

正则式为这样:
/[1|2]\d{7,7}[,\d{1,3}]?\r?$/

代码如下:
var aStr = str.split("\n");
if (aStr.length < 1) {
alert('请输入数据!');
return false;
} else {
for (var i = 0; i < aStr.length; i++) {
if (!(/[1|2]\d{7,7}[,\d{1,3}]?\r?$/.test(aStr[i]))) {
alert("第 " + (i + 1) + " 行输入错误!\n" + aStr[i]);
return false;
break;
}
}
return true;
}

结果验证后说第二行输入错识:
20120102,1

是怎么回事?
...全文
84 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你的正则中存在两个问题 [1|2] 的意思为要么为1 | 2 即可以匹配 |1234567 这样的输入 还有后边的中括号 也是类似这样的问题 你应该清楚中括号在正则中的用法
zhjdg 2014-02-11
  • 打赏
  • 举报
回复
/[1|2]\d{7,7}[,\d{1,3}]?\r?$/ /[1|2]\d{7,7}(,\d{1,3})?\r?$/
  • 打赏
  • 举报
回复
/[1-2]\d{7,7}(,\d{1,3})?\r?$/

87,910

社区成员

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

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