正则表达式的一些问题,帮忙分析下

判定0到100之内的整数,在网上看到了一些正则表达式,也没时间去学,所以自个儿琢磨一下,请分析下以下两条式子的区别,最好在解说下这两条式子的逻辑意思。
(1)^(0|[0-9][0-9]?|100)$
(2)/^(?:0|[1-9][0-9]?|100)$/ //这个式子两边的斜杠有什么作用吗,起到分隔的作用吗,什么情况要用到?
最新回答
心里下着雨

2024-11-23 07:50:56

第一个式子:^(0|[0-9][0-9]?|100)$
^表示字符串的开头,|表示或,0|[0-9][0-9]?|100表示0或者[0-9][0-9]?或者100,最开始的0是多余的.
[0-9][0-9]? 中[0-9]表示数字0到9任意一个字符,第二个[0-9]?后面的问号表示第二个[0-9]可以没有,
所以[0-9][0-9]?就表示1到2位数字,可以是00,01这种,这个已经包括了0。
最后的$表示字符串的结尾,整个式子匹配1-2位数字或者100
(2)/^(?:0|[1-9][0-9]?|100)$/
两边的斜杠是某些编程语言用来标记正则表达式的符号,并不是正则正则表达式的一部分
这个正则中间是[1-9][0-9]?匹配1-2位数字,但第一位不能为0,中间这部分不能匹配数字0,也不能匹配01,所以这个正则中最开始的数字0是有用的,匹配数字0
这个正则匹配1-2位不以0开头的数字或者0或者100
深拥意中人

2024-11-23 05:53:01

首先,判断0-100的整数的正则表达式可以这样:
^[0-9]|[1-9][0-9]|100$
[0-9] 表示一个范围在0到9的数;
[1-9][0-9]表示10位范围是1-9,个位范围是0-9,即匹配了10到99;
最后是100。
对你的两个正则表达式的解释:

(1)^(0|[0-9][0-9]?|100)$

0和100不用说了,中间匹配了0到9,00到99,其中00到09这种形式严格来说是不对的。
这个表达式中,圆括号表示一个捕获,即保存圆括号里面匹配到的内容在之后使用。例如可以在替换的时候用\1,\2(或$1,$2)的形式用在替换字符串里表示括号里面匹配到的内容;
符号 | 表示“或”,即并集。
[0-9] 表示可选范围,这里是从0到9,另外常见的还有[a-zA-Z]这样的形式;
问号?表示出现0次或1次。
^表示行开始位置,$表示行结束位置
(2)/^(?:0|[1-9][0-9]?|100)$/

这里前后的斜杠是用在某些语言(例如javascript)里面表示斜杠内的内容是正则表达式。例如:
var pattern = /^abc$/;
这个正则表达式比第一个多了?:,这个是表示非捕获,即不保存圆括号里面的内容来给以后使用。