• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >正则表达式 > 正则表达式技术详解 Regular Expression

正则表达式技术详解 Regular Expression

作者:骑着毛驴的小猴子 字体:[增加 减小] 来源:互联网 时间:2017-08-26

骑着毛驴的小猴子通过本文主要向大家介绍了正则表达式,技术,javascript等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1、两种用法

 

  • regexp.xxx(string)
  • string.yyy(regexp)

2、常用到在一段文本中搜索、匹配、替换指定形式的文本
eg:词语出现频率统计、验证邮箱等
二、语法
1、定义正则表达式对象用Perl风格的直接量语法
/pattern/attribute

  • 不加引号
  • / 不能省略
  • pattern –>表达式内容
  • attribute –> i,g,m

2、表达式内容可以包含以下几类:

  • 字符类:用于匹配普通字符
    • 所有的单个大小写字母、数字都是一个正则表达式
    • 正则表达式中的特殊语法含义的元字符,用\转义
      • . \ / * ? + [ ( ) ]{ } ^ $ |
  • 量词元字符:指定字符出现的次数
字符 含义
n? 匹配n出现0次或1次
n* 匹配n出现0次或多次
n+ 匹配n出现1次或多次
n{x} 匹配n出现x次
n{x,y} 匹配n出现x次到y次
n{x,} 匹配n出现>=x次
  1. 范围选择
字符 含义
[abc] 匹配指定集合内的任意一个字符
[^abc] 匹配不在指定集合内的任意一个字符
[0-9] 匹配任意一个数字
[a-z] 匹配任意一个小写字母
A-Z] 匹配任意一个大写字母
[A-z] 匹配大A到小z的所有字符
exp1 | exp2 匹配exp1或exp2
  1. 特殊匹配符
字符 含义
\d 匹配一个数字
\D 匹配一个非数字
\w 匹配一个数字、字母、下划线
\W 匹配一个非数字、字母、下划线
\s 匹配一个空白符
\S 匹配一个非空白符
. 匹配除了回车和换行之外的任意单字符
  1. 指定匹配位置
字符 含义
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配单词的边界
\B 匹配单词的非边界
? = x 匹配其后紧接x的字符串
? != x 匹配其后没有紧接x的字符串
  1. 指定修饰符
字符 含义
i 忽略大小写
g 全局匹配
m 多行匹配

三、创建正则表达式对象的两种用法

1.直接量表示法 (perl写法)

var reg = /式子/igm;

2.对象创建法(JS写法)

var reg = new RegExp("式子","igm");

在JS中,\是转义的意思,因此

var reg = new RegExp("abs\d","i"); //false

正确写法:

var reg = new RegExp("abs\\d","i"); //false

四、RegExp对象属性

  1. global 判断是否为全局匹配
  2. ignoreCase 判断是否忽略大小写
  3. multiline 判断是否支持多行匹配
  4. source 返回模式匹配所使用的文本(原式子) 《只读》
var str = "abcdefg";
var reg = /cd/gm;
console.log(reg.global); //true
console.log(reg.ignoreCase); //false
console.log(reg.multiline);  //true
console.log(reg.source); //cd

5、RegExp.$n(n取值:1-99): 指代最近一次成功匹配第N个分组的内容,也就是与正则表达式匹配的第n个 子匹配(以括号为标志)字符串

var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配)     

r.exec('1985-10-15');

s1=RegExp.$1;

s2=RegExp.$2;

s3=RegExp.$3;

console.log(s1+" "+s2+" "+s3)//结果为1985 10 15

-注意:$n是RegExp的属性

var reg =/ /i;
reg.$1;   //错误语法

6、lastIndex 指定下次从哪开始匹配

lastIndex必须和g连用

  • 该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。
  • 上次匹配的结果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它们都以 lastIndex 属性所指的位置作为下次检索的起始点。这样,就可以通过反复调用这两个方法来遍历一个字符串中的所有匹配文本。
  • 该属性是可读可写的。只要目标字符串的下一次搜索开始,就可以对它进行设置。当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把 lastIndex 属性重置为 0。
var str = "The rain in Spain stays mainly in the plain";
var patt1 = new RegExp("ain", "g");

patt1.test(str)
console.log("Match found. index now at: " + patt1.lastIndex);  //8

五、RegExp常用方法

  1. test()
    ①检索字符串指定的值
    ②会影响lastIndex
    ③返回true false
var str = "abcdefg";
var reg = /cd/gm;
console.log(reg.test(str));  //true
console.log(reg.lastIndex);  //4 <下次从4开始查找>
  1. exec()
    ①会影响lastIndex
    ②返回找到的索引内容和input【关联数组】 / null
var str = "abcdefg";
var reg = /cd/gm;
console.log(reg.exec(str));  //[ 'cd', index: 2, input: 'abcdefg' ]
console.log(reg.lastIndex);  //4 <下次从4开始查找>
  1. compile() :

    ① 该方法可以编译指定的正则表达式,编译之后的正则表达式执行速度将会提高,如果正则表达式多次被调用,那么调用compile方法可以有效的提高代码的执行速度,如果该正则表达式只能被使用一次,则不会有明显的效果

② 基本语法:objReg.compile(pattern[,flag])
objReg必选项,RegExp对象变量的名称
pattern 必选项 正则表达式
flag 可选项 匹配选项

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
  • 正则表达式技术详解 Regular Expression
  • 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
  • 正则表达式之零宽断言实例详解【基于PHP】
  • 正则表达式中环视的简单应用示例【基于java】
  • 除捕获组的语法外,其它的(?...)语法都不是捕获组的验证
  • 正则表达式——详细讲解平衡组
  • 正则表达式的多行模式与单行模式图文分析
  • JavaScript的正则也有单行模式了
  • JS正则表达式一条龙讲解(从原理和语法到JS正则)

相关文章

  • 2017-05-11ASP正则函数替换分页后的参数
  • 2017-05-11用正则查找html中有id属性的html标签
  • 2017-05-11MongoDB正则表达式及应用
  • 2017-05-11EditPlus 正则表达式替换字符串详解
  • 2017-05-11学习正则!超基础简单例子
  • 2017-05-11js正则判断非法字符限制输入
  • 2017-05-11PHP正则匹配图片并给图片加链接详解
  • 2017-05-11UBB代码在论坛中的应用
  • 2017-05-11比较常用证件正则表达式验证大全
  • 2017-05-11java正则表达式四种常用的处理方式(匹配、分割、替代、获取)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • eclipse、myeclipse中删除所有注释正则表达式
    • 取图片路径的正则
    • 正则表达式中环视的简单应用示例【基于java】
    • 精确查找PHP WEBSHELL木马 修正版
    • 比较常用的几个正则表达式匹配数字(收藏)
    • JavaScript正则表达式(总结篇)
    • Python正则表达式之基础篇
    • php正则表达式匹配img中任意属性的方法
    • 正则表达式{n,m}量词(至少n次,最多m次)
    • 通过Java正则表达式去掉SQL代码中回车换行和多余空格

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有