为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript正则表达式

Samaritan Web前端工程师
难度中级
时长 1小时30分
学习人数
综合评分9.70
346人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.6 逻辑清晰
  • 正则表达式应用场景 1.在IDE中使用正则表达式处理规则复杂的字符串查找、替换需求 2.在JavaScript程序设计中使用正则表达式处理字符串 3.在其他语言中 正则表达式 Regular Expression,使用单个字符串来描述、匹配一序列符合某个句法规则的字符串 简言之:就是按照某种规则去匹配符合条件的字符串,而这种规则就是正则表达式 使用正则表达式的目的: 自己先定义一种规则,然后去匹配一个字符串中符合规则的子字符串,甚至是整个字符串是否符合规则 通配符 find ./ -name *.txt 在当前目录下查找所有的txt文件 *.txt *代表任意字符 匹配邮箱的正则表达式 ^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$ 在线的正则表达式工具:http://regexper.com 语法: \b:单词边界 \bis\b .:任意字符 需要转义 \. *:0-n +: 1-n ?: 0-1 \d: 数字 \转义 匹配日期: 2006/02/03 1998-03-07 ^(\d{4})[\-](\d{2})[\-](\d{2})$ ()分组 取出:$2-$3-$1 02-03-2006 $1代表第一个小括号的内容,以此类推
    查看全部
  • /d 数字
    查看全部
  • 字符串对象方法 1.search String.prototype.search(reg) search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串 方法返回第一个匹配结果 index,查找不到返回 -1 search()并不执行全局匹配,它将忽略标志 g ,并且总是从字符串的开始进行检索 例子: 'A11B2C3D4'.search(/\d/) 1 2.match String.prototype.match(reg) match()方法将检索字符串,以找到一个或多个与RegExp匹配的文本 RegExp是否具有标志 g 对结果影响跟大 非全局调用,即没有 g 如果RegExp没有标志 g,那么 match()方法就只能在字符串中执行一次匹配 如果没有找到任何匹配的文本,将返回null 否则它将返回一个数组,其中存放了与它找到的匹配文本有关的信息 返回数组的第一个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本 除了常规的数组元素之外,返回的数组还含有2个对象属性 index 声明匹配文本的起始字符在字符串的位置 input 声明对 stringObject的引用 全局调用 如果RegExp具有标志 g,则match()方法将执行全局检索,找到字符串中的所有匹配子字符串 没有找到任何匹配的子串,则返回null 如果找到了一个或多个匹配的子串,则返回一个数组 数组元素中存放地字符串中所有的匹配子串,而且也没有index 属性或input属性 3.replace String.prototype.replace(str,replaceStr) String.prototype.replace(reg,replaceStr) String.prototype.replace(reg,function) function参数含义 function会在每次匹配替换的时候调用,有四个参数 匹配字符串 正则表达式分组内容,没有分组则没有该参数 匹配项在字符串中 index 原字符串
    查看全部
  • 正则表达式本身的两个方法 1.test RegExp.prototype.test(str) 用于测试字符串参数中是否存在匹配正则表达式模式的字符串,如果存在则返回true,否则返回false lastIndex 记录当前匹配结果的、最后一个字符的、下一个字符的位置 注意:test()方法在匹配的时候当匹配到一个结果时,会从lastIndex位置开始匹配下一个结果,直到不存在的时候才置为0。因此,当使用全局g属性标识时,当匹配到最后一个结果时,lastIndex值指向不存在的位置,此时再执行test()会返回false。 例子:多次执行test()方法,会在true、false之间循环 (/\w/g).test('a')每次执行都是正确的,但是通过实例化对象,需要很大的开销 test()方法:原意就是测试有没有、能不能匹配上,当使用test原意时,没必要加g 2.exec RegExp.prototype.exec(str) 使用正则表达式模式对字符串执行搜索,并将更新全局RegExp对象的属性一反映匹配结果 如果没有匹配的文本则返回 null,否则返回一个结果数组: - index 声明匹配文本的第一个字符位置 - input 存放被检索的字符串 string 非全局调用 调用非全局的RegExp对象的 exec()时,返回数组 第一个元素是与正则表达式相匹配的文本 第二个元素是与RegExpObject的第一个子表达式相匹配的文本(如果有的话) 第三个元素是与RegExp对象的第二个子表达式相匹配的文本(如果有的话),以此类推
    查看全部
    3 采集 收起 来源:test 和 exec方法

    2016-10-17

  • 对象属性 global:是否全文搜索,默认false ignore case:是否大小写敏感,默认是false multiline:多行搜索,默认值是false lastIndex:是当前表达式匹配内容的最后一个字符的下一个位置 source:正则表达式的文本字符串
    查看全部
    0 采集 收起 来源: JS对象属性

    2016-10-17

  • 前瞻 正则表达式从文本头部向尾部开始解析,文本尾部方向,成为“前” 前瞻 就是在正则表达式匹配到规则的时候,向前检查是否符合断言。比如找到儿子为张三,还得看看他的父亲是否是李四 后顾/后瞻方向相反 注意:JavaScript不支持后顾 符合特定断言称为 肯定/正向 匹配 不符合特定断言称为 否定/负向 匹配 正向前瞻 exp(?=assert) 先判断是否符合正则,再符合正则的基础上判断是否符合断言 负向前瞻 exp(?!asseret) 例如: \w(?=\d) 正向前瞻 符合断言 匹配单词字符,要求首先是一个单词,并且这个单词符合断言,后跟一个数字 'a2*3'.replace(/\w(?=\d)/g,'A') "A2*3" 'a2*3bb'.replace(/\w(?=\d)/g,'A') "A2*3bb" 断言不参与规则部分,所以不会被替换
    查看全部
    0 采集 收起 来源:前瞻

    2018-03-22

  • 分组 匹配字符串 Byron 连续出现 3 此的场景 1. 使用()可以达到分组的功能,使量词作用于分组 (Byron){3} 例子:小写字母连续出现3次 'a1b2c3d4'.replace(/[a-z]\d{3}/g,'Q'); "a1b2c3d4" 'a1b2c3d4'.replace(/([a-z]\d){3}/g,'Q'); "Qd4" 2. 或 使用 将正则表达式分成前后两部分,可以达到 或 的效果 isIS ByronCasper Byr(onCa)sper 例子: 'ByronCasper'.replace(/ByronCasper/g,'Q'); "QQ" 'ByrCasperByronsper'.replace(/Byr(onCa)sper/g,'Q'); "QQ" 3.反向引用 2015-12-25 => 12/25/2015 在分组的基础上,分组取值使用'$1 $2....'代表捕获分组内容 实现: '2015-09-09'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1'); "09/09/2015" 4. 忽略分组 不希望捕获某些分组,只需要在分组内加上 ?:即可 (?:Byron).(ok) '2015-07-09'.replace(/(?:\d{4})-(\d{2})-(\d{2})/g,'$2/$3/$1'); "09/$3/07"
    查看全部
    0 采集 收起 来源:分组

    2018-03-22

  • 贪婪模式(默认) \d{3,6} 1234568 正则表达式在匹配时,尽可能多的匹配,直到匹配失败 '1234568'.replace(/\d{3,6}/g,'Q'); "Q8" '1234568'.replace(/\d{3,6}/,'Q'); "Q8" 非贪婪模式 正则表达式尽可能少的匹配,即一旦成功匹配就不再继续匹配 做法:在量词后加上 ? 即可 例子:'123456789'.match(/\d{3,5}?/g) ["123", "456", "789"]
    查看全部
  • ? 出现<=1次 + 出现>=1次 * 出现任意次 {n}出现n次 {n,m}出现n到m次 {n,}出现至少n次
    查看全部
    0 采集 收起 来源:量词

    2018-03-22

  • 预定义类 正则表达式提供了 预定义类 匹配常见的字符类 . 等价于 [^\r\n] 表示除了回车符和换行符之外的所有的字符 \d 等价于 [0-9] 数字字符 \D 等价于 [^0-9] 非数字字符 \s 等价于 [\t\n\x0B\f\r] 空白符 s:space \S 等价于 [^\t\n\x0B\f\r] 非空白符 \w 等价于 [a-zA-Z_0-9] 单词字符(字母、数字下划线) w:word \W 等价于 [^a-zA-Z_0-9] 非单词字符 提示:大写的表示取反 例子: 匹配一个 ab+数字+任意字符 的字符串 使用范围类:ab[0-9][^\r\n] 使用预定义类:ab\d. 常见的边界匹配字符: ^ 以XXX开始 $ 以XXX结束 \b 单词边界 \B非单词边界 例子: 1. '@123@abc@'.replace(/^@./g,'Q'); "Q23@abc@" 2.'@123@abc@'.replace(/.@$/g,'Q'); "@123@abQ" 3.'@123@abc@'.replace(/.@/g,'Q'); "@12QabQ"
    查看全部
  • 范围类 使用字符类匹配数字 [0123456789] 简写[0-9] 可以使用 [a-z] 来连接两个字符表示 从a到z的任意字符,闭区间,包含a和z本身 如: 'a1b2c3zx4z9'.replace(/[a-z]/g,'Q'); "Q1Q2Q3QQ4Q9" 在[]组成的类内部是可以连写的 [a-zA-Z] 如: 'a1b2c3zx4z9ADG'.replace(/[a-zA-Z]/g,'Q'); "Q1Q2Q3QQ4Q9QQQ" 注意: 当-在两个字符之间,表示范围,想匹配-,直接在后面加-即可 '2016-08-08'.replace(/[0-9-]/g,'Q'); "QQQQQQQQQQ"
    查看全部
    0 采集 收起 来源:范围类

    2018-03-22

  • 字符类 一般情况下正则表达式一个字符对应字符串一个字符 表达式 ab\t 的含义是: 一个字母a一个字母b加一个水平制表符 可以使用元字符[]来构建一个简单的类,所谓类是指符合某些特征的对象,一个泛指,而不是特指某个字符 表达式[abc]:把字符 a 或 b 或 c 归为一类,表达式可以匹配这类的字符,即匹配abc中的一个 'a1b2c3d4'.replace(/[abc]/g,'字符'); "字符1字符2字符3d4" 字符类取反 使用元字符 ^ 创建 反向类/负向类,反向类的意思是:不属于某类的内容 表达式 [^abc] 表示 不是字符a或b或c 的内容 'a1b2c3d4'.replace(/[^abc]/g,'字符'); "a字符b字符c字符字符字符"
    查看全部
    2 采集 收起 来源:字符类

    2018-03-22

  • 正则表达式由两种基本字符类型组成 1.原义文本字符:代表它原来含义的字符 例如:abc、123 2.元字符:在正则表达式中有特殊意义的非字母字符 例如:\b表示匹配单词边界,而非\b 在正则表达式中具体特殊含义的字符:* + ? $ ^ . \ () {} [] 元字符: \t:水平制表符; \v:垂直制表符; \n:换行符; \r:回车符; \0:空字符; \f:换页符; \cX:与X对应的控制字符
    查看全部
    4 采集 收起 来源:元字符

    2016-10-17

  • g:global 全文搜索,不添加则搜索到第一个匹配停止; i:ignore case 忽略大小写,默认大小写敏感; m:multiple lines 多行搜索
    查看全部
    0 采集 收起 来源:RegExp对象

    2016-10-17

  • 正则表达式的两种方法: 1.字面量 var b=/\bam\b/;在// 中间填写正则表达式 alert( "i am lily".replace(b,'AM')); //i AM lily 2.构造函数 var reg=new RegExp(/\bis\b/);或者var reg=new RegExp('\\bis\\b','g');其中g为修饰符。 alert("she is beautiful".replace(reg,"is not")); // she is not beautiful
    查看全部
    0 采集 收起 来源:RegExp对象

    2018-03-22

举报

0/150
提交
取消
课程须知
1、对JavaScript 语法了解。 2、熟练使用文本编辑器。
老师告诉你能学到什么?
1、正则表达式基本语法 2、正则表达式分类梳理 3、好用的正则表达式图形化理解工具 4、正则表达式在JavaScript中的应用 5、常见文本批处理办法

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!