博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式---------------ip地址
阅读量:5955 次
发布时间:2019-06-19

本文共 2160 字,大约阅读时间需要 7 分钟。

正则表达式

捕获组

      语法:

字符 

描述

示例

(pattern)

匹配pattern并捕获结果,自动设置组号。

 (abc)+d

匹配abcd或者abcabcd

(?<name>pattern)  或(?'name'pattern)

匹配pattern并捕获结果,设置name为组名。

 

\num

对捕获组的反向引用。其中 num 是一个正整数。

(\w)(\w)\2\1

匹配abba

\k< name >或\k' name '

对命名捕获组的反向引用。其中 name 是捕获组名。

(?<group>\w)abc\k<group>

匹配xabcx

 

      使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个捕获组会自动拥有一个组号,规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。

非捕获组

      语法:

字符 

描述

示例

(?:pattern)

匹配pattern,但不捕获匹配结果。

'industr(?:y|ies)

匹配'industry'或'industries'。

(?=pattern)

零宽度正向预查,不捕获匹配结果。

'Windows (?=95|98|NT|2000)'

匹配 "Windows2000" 中的 "Windows"

不匹配 "Windows3.1" 中的 "Windows"。

(?!pattern)

零宽度负向预查,不捕获匹配结果。

'Windows (?!95|98|NT|2000)'

匹配 "Windows3.1" 中的 "Windows"

不匹配 "Windows2000" 中的 "Windows"。

(?<=pattern)

零宽度正向回查,不捕获匹配结果。

'2000 (?<=Office|Word|Excel)'

匹配 " Office2000" 中的 "2000"

不匹配 "Windows2000" 中的 "2000"。

(?<!pattern)

零宽度负向回查,不捕获匹配结果。

'2000 (?<!Office|Word|Excel)'

匹配 " Windows2000" 中的 "2000"

不匹配 " Office2000" 中的 "2000"。

 非捕获组只匹配结果,但不捕获结果,也不会分配组号,当然也不能在表达式和程序中做进一步处理。

      首先(?:pattern)与(pattern)不同之处只是在于不捕获结果。

 

IP的栗子

<html>
<head>
<title>最简洁的IP判断正则表达式</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<script type="text/javascript" src="http://files.cnblogs.com/Zjmainstay/jquery-1.6.2.min.js"></script>
</head>
<body>
IP字段: <input type="text" id="ip" />
判断结果:<input type="text" id="result" />
<script type="text/javascript">
  $(document).ready(function(){
  /**
  * 最简洁的IP判断正则表达式
  * 25[0-5] 250-255
  * 2[0-4]\d 200-249
  * [01]?\d\d? 000-199(0-9 \d)(10-99 \d\d)(100-99 1\d\d)
  * ($|(?!\.$)\.) 结束 或者 不以.结束的加上.
  * (?!^0{1,3}(\.0{1,3}){3}$) 排除 0.0.0.0 /^(?!^0{1,3}(\.0{1,3}){3}$)((25[0-5]|2[0-4]\d|[01]?\d\d?)($|(?!\.$)\.)){4}$/
  * (?!^255(\.255){3}$) 排除 255.255.255.255
  */
  function validateIP(str){
    return !!str.match(/^((25[0-5]|2[0-4]\d|[01]?\d\d?)($|(?!\.$)\.)){4}$/);
  }
  $("#ip").blur(function(){
    var m = validateIP($(this).val());
    m = m || 'null';
    $("#result").val(m);
  });
});
</script>
</body>
</html>

 

此栗子考察的知识有:正则表达式(?!零宽度负向预查,不捕获匹配结果。),match的用法

 

转载于:https://www.cnblogs.com/FineDay/articles/6727052.html

你可能感兴趣的文章
zabbix3.0.3-源码安装
查看>>
nginx的安装与配置
查看>>
推荐-关于职业规划
查看>>
nginx+apache实现负载均衡+动静分离配置(编译安装)
查看>>
修复群集无法切换磁盘问题
查看>>
expdp 详解及实例
查看>>
洛谷——P1495 曹冲养猪
查看>>
C++中 栈的简单封装
查看>>
我的友情链接
查看>>
Linux常用命令--iconv
查看>>
varnish的了解与常用配置使用
查看>>
Product user profile information 没有导入
查看>>
DELL T410服务器U盘安装Centos7
查看>>
解读最具O2O属性—哈根达斯微信企业号的成功之道
查看>>
Sqlserver2008日志压缩
查看>>
虚拟机usb无线上网同时主机本地上网或无线无线上网
查看>>
View的事件分发机制
查看>>
Android Ndef Message解析
查看>>
mysqldump backup script
查看>>
coding4fun比赛总结
查看>>