求助,关于正则表达式的。关于特殊字符:逗号、减号的问题

csdn12300 2016-08-25 03:04:53
问题1
只能输入字母,或者逗号隔开的字母
例如:
ABC
ABC,DEF
ABC,DEF,GHI
只能输入三个字符,并且多个的话只能用逗号(,)分割

问题2
只能输入A-B的格式,并且A、B都是0到365之间的整数
例如:12-100

问题3
这是参考一个网站上的输入限制:支持录入多个航班与航班范围,范围之间用“-”链接,用半角“,”分隔单个航班需要在航班范围前录入,如:MU8072,MU2312-MU5431
现在做的项目也要这种效果,对正则一窍不通啊
...全文
1783 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn12300 2016-08-26
  • 打赏
  • 举报
回复
多谢上边的几位大神,问题已解决,昨天太忙,也没来得及结贴
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
引用 21 楼 crying_boy 的回复:
[quote=引用 20 楼 csdn12300 的回复:] [quote=引用 17 楼 crying_boy 的回复:]

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])-(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])$/,/之前的有错,前面出现-时也通过了。只好改成这样了
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;
re1如果不限制字母的个数是不是把{3}去掉。/^[a-z](?:,[a-z])*$/i 这样吗?[/quote] 你还真是完全不愿意自己动手呀……这就改出现的次数,百度一查:javascript 正则表达式,自己看过就知道要怎么改了吧?[/quote] 关于限制出现次数的,我查过了,我刚才就用这种写的,没成功,所以才来问 下的。。。。最后发现不是正则的事情,而是缓存的问题,清理下缓存就可以了
泡泡鱼_ 2016-08-25
  • 打赏
  • 举报
回复
引用 20 楼 csdn12300 的回复:
[quote=引用 17 楼 crying_boy 的回复:]

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])-(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])$/,/之前的有错,前面出现-时也通过了。只好改成这样了
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;
re1如果不限制字母的个数是不是把{3}去掉。/^[a-z](?:,[a-z])*$/i 这样吗?[/quote] 你还真是完全不愿意自己动手呀……这就改出现的次数,百度一查:javascript 正则表达式,自己看过就知道要怎么改了吧?
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
引用 17 楼 crying_boy 的回复:

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])-(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])$/,/之前的有错,前面出现-时也通过了。只好改成这样了
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;
re1如果不限制字母的个数是不是把{3}去掉。/^[a-z](?:,[a-z])*$/i 这样吗?
泡泡鱼_ 2016-08-25
  • 打赏
  • 举报
回复
引用 18 楼 jslang 的回复:
[quote=引用 15 楼 crying_boy 的回复:]

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^((-)?(0|[1-9](\d)?|[1-2][0-9]{2}|3[0-6][0-5])){1,2}$/,
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;

re2不能匹配309[/quote] 有道理。第三位过5的都不行……只能再截断了 谢谢指正,脑子估计是过水了。哈哈

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^(0|[1-9](\d)?|[1-2]\d{2}|3[0-5]\d|36[0-5])-(0|[1-9](\d)?|[1-2]\d{2}|3[0-5]\d|36[0-5])$/,
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;
天际的海浪 2016-08-25
  • 打赏
  • 举报
回复
引用 15 楼 crying_boy 的回复:

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^((-)?(0|[1-9](\d)?|[1-2][0-9]{2}|3[0-6][0-5])){1,2}$/,
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;

re2不能匹配309
泡泡鱼_ 2016-08-25
  • 打赏
  • 举报
回复

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])-(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])$/,/之前的有错,前面出现-时也通过了。只好改成这样了
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;
泡泡鱼_ 2016-08-25
  • 打赏
  • 举报
回复

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^((-)?(0|[1-9](\d)?|[1-2]\d{2}|3[0-6][0-5])){1,2}$/,//简化一下[0-9]是可以直接使用\d的
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;
泡泡鱼_ 2016-08-25
  • 打赏
  • 举报
回复

var re1 =   /^[a-z]{3}(?:,[a-z]{3})*$/i,
    re2 =   /^((-)?(0|[1-9](\d)?|[1-2][0-9]{2}|3[0-6][0-5])){1,2}$/,
    re3 =   /^(\w+)(((?:,(\w+))*)(?:-(\w+))?)*$/i;

天际的海浪 2016-08-25
  • 打赏
  • 举报
回复
要用正则匹配两个数的范围比较麻烦,要分阶段进行匹配。0-365啊 0 匹配0 [1-9]\d? 匹配1-99 [1-2]\d{2} 匹配100-299 3[0-5]\d 匹配300-359 36[0-5] 匹配360-365 /^(0|[1-9]\d?|[1-2]\d{2}|3[0-5]\d|36[0-5])\-(0|[1-9]\d?|[1-2]\d{2}|3[0-5]\d|36[0-5])$/
天际的海浪 2016-08-25
  • 打赏
  • 举报
回复
引用 12 楼 csdn12300 的回复:
[quote=引用 11 楼 baidu_31302759 的回复:] [quote=引用 9 楼 csdn12300 的回复:] [quote=引用 8 楼 baidu_31302759 的回复:] 想要什么正则 就baidu 都有
要能搜到准确的正则就不会来发帖了[/quote] 问题2 不必要用正则 先检测有没有- 如果有 再用-分开的 看两个数的范围对不对 这样可以不[/quote] 我也知道这样可以,但是要求就是让用正则写,要存入公共文件的,所以。。。[/quote] 要用正则匹配两个数的范围比较麻烦,要分阶段进行匹配。 0 匹配0 [1-9]\d? 匹配1-99 1\d{2} 匹配100-199 2[0-5]\d 匹配200-259 26[0-5] 匹配260-265 /^(0|[1-9]\d?|1\d{2}|2[0-5]\d|26[0-5])\-(0|[1-9]\d?|1\d{2}|2[0-5]\d|26[0-5])$/
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
引用 11 楼 baidu_31302759 的回复:
[quote=引用 9 楼 csdn12300 的回复:] [quote=引用 8 楼 baidu_31302759 的回复:] 想要什么正则 就baidu 都有
要能搜到准确的正则就不会来发帖了[/quote] 问题2 不必要用正则 先检测有没有- 如果有 再用-分开的 看两个数的范围对不对 这样可以不[/quote] 我也知道这样可以,但是要求就是让用正则写,要存入公共文件的,所以。。。
baidu_31302759 2016-08-25
  • 打赏
  • 举报
回复
引用 9 楼 csdn12300 的回复:
[quote=引用 8 楼 baidu_31302759 的回复:] 想要什么正则 就baidu 都有
要能搜到准确的正则就不会来发帖了[/quote] 问题2 不必要用正则 先检测有没有- 如果有 再用-分开的 看两个数的范围对不对 这样可以不
baidu_31302759 2016-08-25
  • 打赏
  • 举报
回复
引用 9 楼 csdn12300 的回复:
[quote=引用 8 楼 baidu_31302759 的回复:] 想要什么正则 就baidu 都有
要能搜到准确的正则就不会来发帖了[/quote] 好吧 看来这个比较麻烦,我也不懂 每次我也是上网上搜根本就没研究过
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
引用 8 楼 baidu_31302759 的回复:
想要什么正则 就baidu 都有
要能搜到准确的正则就不会来发帖了
baidu_31302759 2016-08-25
  • 打赏
  • 举报
回复
想要什么正则 就baidu 都有
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
引用 4 楼 crying_boy 的回复:
[quote=引用 3 楼 csdn12300 的回复:] [quote=引用 2 楼 zzgzzg00 的回复:] 1 /^[a-z]{3}(?:,[a-z]{3})*$/i 2 直接数字去比较吧 要不还得一堆 | 3 感觉和1差不多啊 多了个-吧?
/^[a-z]{3}(?:,[a-z]{3})*$/i 为什么多个 i ? var reg = /^[a-z]{3}(?:,[a-z]{3})*$/ 这个不是才算得上一行完整的代码吗?在js中正则的写法不是 /^ 开始 $/结束吗? [/quote] 忽略大小写,有你这问的时候,百度下正则就知道了呀……

/^((,)?([A-Z]{3}))+$/
[/quote] 受教了!!现在忙着敲代码呢,任务比较紧急。由于刚接触正则(发帖前10几分钟刚接到任务,要写几个正则验证),而且任务来的急,并且着急用,所以只是看了些基础的正则案例,没有太多时间去研究,还要很多不明白的地方
csdn12300 2016-08-25
  • 打赏
  • 举报
回复
引用 2 楼 zzgzzg00 的回复:
1 /^[a-z]{3}(?:,[a-z]{3})*$/i 2 直接数字去比较吧 要不还得一堆 | 3 感觉和1差不多啊 多了个-吧?
原谅我刚接触正则。。。大神,问题2和问题3 要不先写出来,给我应应急呗,着急等用呢
泡泡鱼_ 2016-08-25
  • 打赏
  • 举报
回复
引用 3 楼 csdn12300 的回复:
[quote=引用 2 楼 zzgzzg00 的回复:] 1 /^[a-z]{3}(?:,[a-z]{3})*$/i 2 直接数字去比较吧 要不还得一堆 | 3 感觉和1差不多啊 多了个-吧?
/^[a-z]{3}(?:,[a-z]{3})*$/i 为什么多个 i ? var reg = /^[a-z]{3}(?:,[a-z]{3})*$/ 这个不是才算得上一行完整的代码吗?在js中正则的写法不是 /^ 开始 $/结束吗? [/quote] 忽略大小写,有你这问的时候,百度下正则就知道了呀……

/^((,)?([A-Z]{3}))+$/
加载更多回复(3)

87,997

社区成员

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

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