20170605-正则表达式相关

字面量定义正则表达式

  • ECMAScript经过RegExp类型来支持正则表达式正则表达式

  • var expression = / pattern / flags:模式(pattern)部分能够是任何简单或复杂的正则表达式,标志(flag)部分用来标明正则表达式的匹配模式express

  • 正则表达式的匹配模式支持下列3个标志:函数

    • g:表示全局模式,即模式会被应用于全部字符串,而非在发现第一个匹配项时当即中止code

    • i:表示不区分大小写模式对象

    • m:表示多行模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项索引

  • 正则表达式:ip

    • \d: 等价于[0-9],表示数字字符字符串

    • \w: 等价于[a-zA-Z_0-9],表示字母,数字,下划线input

    • \s: 等价于[\t\n\x0B\f\r],表示空白符io

    • \[a-zA-Z0-9]: 表示大小写字母和数字

    • \b: 表示单词边界,单词边界就是单词和符号之间的边界,这里的单词能够是中文字符,英文字符,数字;符号能够是中文符号,英文符号,空格,制表符,换行

    • .: 等价于[^\r\n],表示除了回车和换行符以外的全部字符

    • *: 表示出现零次或屡次

    • +: 表示出现一次或屡次

    • ?: 表示出现零次或一次

    • x{3}: 表示x出现3次

    • ^: 表示以XXX开头

    • $: 表示以XXX结尾

使用构造函数建立正则表达式

  • var pattern = new RegExp("[bc]at", "i");

  • RegExp构造函数接受两个参数:一个是要匹配的 字符串模式(注意不是字面量),两一个是可选的标志字符串

经常使用方法:

  • pattern.exec(str):

    • 对于exec()方法而言,即便在模式中设置了全局标志(g),它每次也只会返回一个匹配项。在不设置全局标志的状况下,在同一个字符创上屡次调用exec()将始终返回第一个匹配项的信息。而在设置全局标志的状况下,每次调用exec()则会在字符串中继续查找新匹配项。

    • exec()方法返回一个对象,拥有两个属性:index和input,index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串

  • pattern.test(str):

    • 在模式与该参数匹配的状况下返回true,不然返回false

String类型也能够利用正则表达式来实现相应的功能:

  • match方法:

var text = "cat, bat, sat, fat";

var pattern = /.at/;
text.match(pattern);  // 不管执行多少次,都只会返回 ["cat"]

var pattern = /.at/g;
text.match(pattern);  // 返回 ["cat", "bat", "sat", "fat"]
  • replace方法:

var text = "cat, bat, sat, fat";

var pattern = /.at/;
text.replace(pattern, "skt");  // 不管执行多少次,都只会返回 "skt, bat, sat, fat"

var pattern = /.at/g;
text.replace(pattern, "skt");  // 不管执行多少次,都只会返回 "skt, skt, skt, skt"
  • search方法:返回字符串第一个匹配项的索引

var text = "cat, bat, sat, fat";

var pattern = /.at/;
text.search(pattern);  // 不管执行多少次,都只会返回 0

var pattern = /.at/g;
text.search(pattern);  // 不管执行多少次,都只会返回 0
相关文章
相关标签/搜索