某种意义上来说其实这两种是等效的(一会儿有详细说),只不过楼主的写的不严谨!
如果楼主想匹配的是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)$/;
既然是正确的就没什么好说的了
如果楼主想匹配的是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)$/;
既然是正确的就没什么好说的了