js正则校验问题

Zachariahs 2018-07-25 01:59:31
要校验一段字符串,要求格式是"1,2,3,4,5,6,11,15,22"这样,要求单个数字在30以下,后面必须是英文逗号,然后不能连续出现英文逗号
...全文
156 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zachariahs 2018-07-26
  • 打赏
  • 举报
回复
引用 6 楼 LinBilin_ 的回复:

function checkNumStr(str,min,max){
if(!str)return false;
return str.split(",").every(function(ele){
return ele&&ele>=min&&ele<=max;
});
}

类似这么写,可能会比较好。可以传最大数和最小数
谢谢你
Zachariahs 2018-07-26
  • 打赏
  • 举报
回复
引用 7 楼 jslang 的回复:
引用 4 楼 Zachariahs 的回复:
[quote=引用 1 楼 jslang 的回复:]
/^(?!.*(?:,|^)(\d+)(?=,|$).*(?:,|^)\1(?=,|$))([1-2]?\d(?:,|$))+$/
如果条件是1-31之间呢?

用正则匹配数值范围比较麻烦,要分阶段匹配
1-31要拆分成 1到9 或 10到29 或 30到31
也就是[1-9]|[1-2]\d|3[0-1]
/^(?!.*(?:,|^)(\d+)(?=,|$).*(?:,|^)\1(?=,|$))((?:[1-9]|[1-2]\d|3[0-1])(?:,|$))+$/
[/quote]谢谢你
天际的海浪 2018-07-25
  • 打赏
  • 举报
回复
引用 4 楼 Zachariahs 的回复:
引用 1 楼 jslang 的回复:
/^(?!.*(?:,|^)(\d+)(?=,|$).*(?:,|^)\1(?=,|$))([1-2]?\d(?:,|$))+$/
如果条件是1-31之间呢?

用正则匹配数值范围比较麻烦,要分阶段匹配
1-31要拆分成 1到9 或 10到29 或 30到31
也就是[1-9]|[1-2]\d|3[0-1]
/^(?!.*(?:,|^)(\d+)(?=,|$).*(?:,|^)\1(?=,|$))((?:[1-9]|[1-2]\d|3[0-1])(?:,|$))+$/
  • 打赏
  • 举报
回复

function checkNumStr(str,min,max){
if(!str)return false;
return str.split(",").every(function(ele){
return ele&&ele>=min&&ele<=max;
});
}

类似这么写,可能会比较好。可以传最大数和最小数
  • 打赏
  • 举报
回复

"^(?:[1-9]|[1-2]\\d|3[0-1])(?:,(?:[1-9]|[1-2]\\d|3[0-1]))*$"

1-31
Zachariahs 2018-07-25
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
/^(?!.*(?:,|^)(\d+)(?=,|$).*(?:,|^)\1(?=,|$))([1-2]?\d(?:,|$))+$/
如果条件是1-31之间呢?
Zachariahs 2018-07-25
  • 打赏
  • 举报
回复
我倒是想限制,结果一个小时过去了没人回答
天际的海浪 2018-07-25
  • 打赏
  • 举报
回复
又不限制重复数字了么?
/^([1-2]?\d(?:,|$))+$/
天际的海浪 2018-07-25
  • 打赏
  • 举报
回复
/^(?!.*(?:,|^)(\d+)(?=,|$).*(?:,|^)\1(?=,|$))([1-2]?\d(?:,|$))+$/

87,907

社区成员

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

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