永发信息网

正则表达式 10|[1-9] 和[1-9]|10有什么区别,为什么验证结果不一样

答案:4  悬赏:0  手机版
解决时间 2021-03-09 11:44
  • 提问者网友:贪了杯
  • 2021-03-09 05:44
正则表达式 10|[1-9] 和[1-9]|10有什么区别,为什么验证结果不一样
最佳答案
  • 五星知识达人网友:动情书生
  • 2021-03-09 06:57
和括号无关

某种意义上来说其实这两种是等效的(一会儿有详细说),只不过楼主的写的不严谨!

如果楼主想匹配的是1-10,那我来猜猜楼主的几种写法:(专讲数字,不讲字符串)

第1种:/10|[1-9]/; 这种写法的特点在哪呢?这个正则其实匹配的是除0以外的所有正整数,为什么?因为[1-9]说的是只要验证的这个数包含1到9的任意数字,均会返回true。"10|"是多余的,没有这个也是能返回true。

第2种:/[1-9]|10/; 这种情况同第1种,不多说,匹配的是除0以外任何数。

第3种:/^10|[1-9]$/; 这种写法较第1种成熟些,但仍不严谨,因|的优先级较弱,所以可以这么理解,以10开头,或者[1-9]结尾,也就是说匹配尾数不为0的任何数,20,30,....10000,但由于^10,所以,10可以匹配。

第4种:/^[1-9]|10$/; 这种写法在理解上,同第3种,只不过匹配的是以1到9中任意数为开头的数字。想一想,除了0,哪些数字是以1,2...9开头的数字?所有数!

第5种/^(10|[1-9])$/; 这种才是匹配1-10的正确写法!效果同/^([1-9]|10)$/;
既然是正确的就没什么好说的了

呵呵,楼主自己再努力考虑考虑。

===================

啊哦,打完才发现0分~ 呃....-_-! 赚人气,赚人气,哈哈,支持的按下大拇指,谢谢。
全部回答
  • 1楼网友:酒者煙囻
  • 2021-03-09 09:25
你的写法不严谨所致 正则是比较贪婪的 ^([1-9]10)$ 就对了
  • 2楼网友:渊鱼
  • 2021-03-09 08:38
1.可以不加括号,|的优先级别最低
2.|含义是,该符号前面匹配成功后就不会再继续匹配后面的了,所以[1-9]就可以匹配两次1和0,不会继续匹配10了
所以[1-9]|10改造为下面的就对了
\b[1-9]\b|\b10\b
  • 3楼网友:怙棘
  • 2021-03-09 07:52
要加上括号,例如:(10)|[1-9]
你的10|[1-9]机器理解为1+0|[1-9],或者|前后只结合一个符号
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯