猿问

如何正则匹配到 12-128 ,而不会匹配到129的前两位12?

在尝试使用正则匹配 12-128 时,发现可以匹配到129,如题。

/ 192.168.0.(12[0-8]|1[0-1][0-9]|[2-9][0-9]|1[2-9]) /

匹配 129 时返回true。
判断 255 也会匹配到前两位 25。

如何能避免此类情况出现?

或者是用其他写法?

炎炎设计
浏览 627回答 3
3回答

MMTTMM

这种需求建议就不要用正则实现,直接用正则粗略过滤是个正整数,然后再转成整数判断一下大小就行了,反正js在前端执行,这个速度又不会太慢,还容易维护,你觉得你写个这个正则后面你自己还能看得懂吗? EDIT,没细看你的需求,你这个需求完全不应该用正则去实现,而应该直接用ipv4的解析类库去搞,直接限定ip段岂不美哉?

森栏

对数字区间通常是分段写正则,例如12-128,分成:12-19, 20-99, 100-119,120-128:/^((1[2-9])|([2-9][0-9])|(1[01][0-9])|(12[0-8]))$/ 对于更复杂的,还是直接提取数字,然后if/else判断吧,简单的正则+简单的判断总比复杂的正则好。
随时随地看视频慕课网APP
我要回答