字面量定义正则表达式

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

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

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

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

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

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

  • 正则表达式:

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

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

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

    • \[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

jhhfft
590 声望40 粉丝

Write the Code. Change the World.