正则表达式 - - 选择运算 | & 匹配 ip 地址

本文探讨了正则表达式的选择或关系运算,通过示例解释了匹配IP地址时的注意事项。作者指出,尝试用`[0-255]`匹配0到255的数字会错误地匹配一个字符,而不是一个数字。为正确匹配IP地址,文章给出了详细的步骤和正则表达式构造过程,并提供了验证IP有效性的实例。
摘要由CSDN通过智能技术生成

一、 选择或者关系运算 : |

规则:

  • 自左向右匹配,一旦匹配上,就不会回头
  • 直接上代码:

console.log(/12|34|56/.exec('1'));
console.log(/12|34|56/.exec('3'));
console.log(/12|34|56/.exec('12'));
console.log(/12|34|56/.exec('56'));
console.log(/12|34|56/.exec('123456'));

  • 3,4行打印结果证明: | 是分支 也就是选择关系,
  • 第5行打印结果证明: 自左向右匹配,一旦匹配上,就不会回头,所以只打印了 12
    在这里插入图片描述

1.1、匹配 ip:192.168.1.35 地址呢?

这是我想的办法,正则表达式挺直观的, 但是 它是错的!


console.log(/[0-255]/.exec('684'));
console.log(/[0-255]/.exec('6'));
console.log(/[0-255]/.exec('2')); //[0-255]相当于[0-2]
console.log(/[0-9]*[0-9]*[0-9]*/.exec('684'));


//输出结果

null
null
[ '2', index: 0, input: '2', groups: undefined ]
[ '684', index: 0, input: '684', groups: undefined ]

这个,[ ] 表示匹配该范围内一个字符;
[0-255] 理想是匹配 0~255 的数字,其实仔细想想它这是一下匹配了一个0-3位数字字符串,而 [ ] 只会匹配一个字符;
所以从概念上,这个方法就错了

二、匹配 ip

  • 注解及源码:

// 0~255
// 首先从个位出发:
//    [0-9] 包含 0~9范围
// 然后是十位:
//    [1-9] 与个位相加就包含 10~99
// 百位:
//    1[1-9][0-9]  110~199
//    10[0-9]      100~109
//    2[0-4][0-9]  200~249
//    25[0-5]      250~255

// 使用简写方式:[0-9]:\d
var reg = new RegExp("(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)");
console.log(reg.exec('9'));
console.log(reg.exec('99'));
console.log(reg.exec('199'));
console.log(reg.exec('256'));

// 我们把共同的部分合并一下:
// 200~255 : 2(5[0-5]|[0-4]\d) 
// 0~199 :  [0,1]?\d{1,2}
// 拼接一下: (2(5[0-5]|[0-4]\d))|([0,1]?\d{1,2})
//  加上后面的 3 个重复部分,以及 . 号
var rex = new RegExp('((2(5[0-5]|[0-4]\\d))|[0,1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0,1]?\\d{1,2})){3}')

console.log(rex.test('127.0.0.1'));      // true
console.log(rex.test('192.168.1.35'));	 // true
console.log(rex.test('253.256.0.1'));    // false
console.log(rex.test('0.0.0.01')); 	     // true





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值