博客
关于我
RegExp正则表达式-基本语法
阅读量:305 次
发布时间:2019-03-04

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

RegExp

密码:

f89c

里面有详细的语法跟例子,希望对大家有帮助.

课前补充

  1. 转义字符 “\”
  2. 多行字符串
  3. 字符串换行符\n

RegExp作用

  1. 匹配特殊字符或有特殊搭配原则的字符的最佳选择。

创建方式

  1. 直接量(推荐)
  2. new RegExp();
var str = "abc\\def";        // 直接量        var reg = /abc/i;        // i 是忽略大小写        var Str = "ABCDe";        // 创建的第二种方式        var regg = new RegExp("abc","igm");        // RegExp() 要是这个参数放进去的本身是正则表达式,        // 那么它是相同的规则,但是不是同一个引用        var reg1 = RegExp(reg);        var reg2 = new RegExp(reg);        // reg1 跟 reg 是同一个,他们指向同一个地址        // reg2 内容跟这个 reg是一样的, 但是他们不是指向同一个地址

i g m 修饰符

1. i 执行对大小写不敏感的匹配。2. g 执行全局匹配查找所有匹配而非在找到第一个匹配后停止3. 执行多行匹配

方法

1. reg.test(str);判断str字符串是不是包含这个reg片段2. str.match(reg)把匹配的reg串给返回

方括号(表达式)

1. [abc] 查找方括号之间的任何字符2. [^abc]  查找任何不在方括号之间的字符3. [0-9] 0到9数字4. [a-z] 查找任何从小写 a 到小写 z 的字符5. (red|blue|green) 查找任何指定的选项也就是不是当个字符,可能是个字符串

元字符(具有特殊意义的字符)

1. \w等于[0-9A-z_]也是代表一位(world)2. \W等于[^\w] 表示的\w的非3. \d等于[0-9]  \D等于[^\d]4. \s元字符用于查找空白符(空格符  制表符 回车符 换行符 垂直换行符 换页符) \S 查找非空白字符 \s === [\t\n\r\v\f ]5. \b 匹配单词边界 \B 匹配非单词边界6. . === [^\r\n]

量词

1. n+ 匹配任何包含至少一个 n 的字符串 {1,}2. n* 匹配任何包含零个或多个 n 的字符串 {0,}3. n? {0,1}4. n{x} 表示的就是三个5. n{x,y}  表示的是x到y个6. n{x,}   表示就是x到无限个7. n&  匹配任何结尾为 n 的字符串8. ^n  匹配任何开头为 n 的字符串9. ?=n 匹配任何其后紧接指定字符串 n 的字符串10. ?!=n  匹配任何其后没有紧接指定字符串 n 的字符串

RegExp对象上面的属性

1. global global 属性来检测正则表达式是否具有标志 g2. ignoreCase  RegExp 对象是否具有标志 i3. lastIndex   一个整数,标示开始下一次匹配的字符位置4. multiline  属性用于返回正则表达式是否具有标志 m5. source  正则表达式的源文本

RegExp 方法

1. exec  检索字符串中指定的值 返回找到的值 并确定其位置2. compile  编译正则表达式3. test 检索字符串中指定的值。返回 true 或 false

支持正则表达式的 String 对象的方法

1. search 检索与正则表达式相匹配的值2. match 找到一个或多个正则表达式的匹配3. replace 替换与正则表达式匹配的子串4. split 把字符串分割为字符串数组

拓展() 子表达式

var reg4 = /(\w)\1(\w)\2/g;    // () 这个整体叫做是子表达式    // 上面自然而言就是有两个子表达式    //    // \数字表示的意思就是copy一份前面的值    var str4 = "aabb";    console.log(str4.match(reg4));    console.log(reg4.exec(str4));

非贪婪匹配

  1. 再量词后面加个问号
var str = "aaaaaa";var reg = /a{1,3}?/g;var ans = str.match(reg);

replace

// 匹配xxyy形式,然后换成yyxx        var reg3 = /(\w)\1(\w)\2/g;        var str3 = "aabbccdd";        // var tmp = str3.match(reg3);        var ans = str3.replace(reg3,"$2$2$1$1"); //bbaa                // var anss = str3.replace(reg3,function(arr,$1,$2){        //     // console.log("arr内容:"+arr);        //     console.log($2);        //     return $2 + $2 + $1 + $1;        // });
// the-first-name        // theFirstName        var reg5 = /-(\w)/g;        var str = "the-first-name";        var ans1 = str.replace(reg5,function ($,$1){            // 这个方法调用的次数取决于匹配了多少次就调用多少次            // $1 表示的就是第一个子表达式的内容            return $1.toUpperCase();        });

实现千位分隔符

var str = '1234567890';        var f = str.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');		console.log(f);

解释:

正则表达式 \d{1,3}(?=(\d{3})+$)  表示前面有1~3个数字,后面的至少由一组3个数字结尾。?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。 $& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法的
// 正向预查 正向断言        var str4 = "aba!aa";        var reg44 = /a(?=b)/g;        //表示的是a后面要是b,但是这个b不参加最后结果        console.log(str4.match(reg44));        var f = '1234567890'.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');console.log(f);		// 结果:1,234,567,890

转载地址:http://ivaq.baihongyu.com/

你可能感兴趣的文章
SVM多类识别
查看>>
svn 撤销已提交的错误修改
查看>>
算法工程师数学理论提高札记(improving)
查看>>
VTK:IO之WriteVTI
查看>>
VTK:图片之ImageOrientation
查看>>
VTK:图片之ImageValueRange
查看>>
VTK:隐式函数之ImplicitSphere
查看>>
VTK:InfoVis之DelimitedTextReader
查看>>
数据结构与算法学习1-----稀疏数组
查看>>
焦点事件
查看>>
web前端面试一从输入url到看到页面发生了什么
查看>>
C getopt.h
查看>>
TensorRT/parsers/caffe/caffeParser/caffeParser.h源碼研讀
查看>>
PCL MLS論文Computing and Rendering Point Set Surfaces研讀筆記
查看>>
CentOS下Nvidia docker 2.0之安裝教程&踩坑實錄
查看>>
PIL及matplotlib:OSError: cannot identify image file錯誤及解決方式
查看>>
H5页面授权获取微信授权(openId,微信nickname等信息)
查看>>
SpringBoot的URL是如何拼接的
查看>>
2018年年终总结
查看>>
解决checkbox未选中不传递value的多种方法
查看>>