常用的正则匹配

正则表达式由两个部分组成:

1
/正则表达式主体/修饰符(可选)

其中修饰符主要用到两种:

  1. i: ignore 的意思。表示忽略大小写进行匹配。
  2. g: global 的意思。表示匹配整个字符串,否则第一次匹配成功后,不会继续匹配后面的字符串。

常用的特殊字符

特殊字符 含义
* 0个或者 N 个
+ 1个或者 N 个
? 0个或者1个
.
等价[^\n\r]
匹配任意字符(除了换行和回车)
\ 可以做转义字符
也可以和\b等一起使用表示特殊含义
^ 匹配输入的开始
/^A/匹配一个以字符A开头的字符串
$ 匹配输入的结束
/t$/匹配一个以字符t结尾的字符串
[0-9] 匹配一个数字
\d 同上匹配一个数字
\s 空白字符(空格、制表符、换行符等)
\D
等价[^0-9]
匹配一个非数字字符
[a-zA-Z] 匹配任何一个大小写字母
\w 匹配一个单字字符(字符、数字、下划线)
\W 同上匹配一个非单字字符
[^xyz] 匹配不包含xyz字符的第一个字符

使用正则表达式的常用方法

方法 描述
replace() 查找匹配的字符串,然后用新字符串替代
split() 将原字符串按照正则表达式拆分,将结果存入到一个数组中

使用括号的子字符串匹配

  • 这种情况下,会将匹配的结果存入到一个数组中,也就是会 记忆 匹配得到的结果。

几个例子

  • eg1
1
2
3
4
var re = /\w+\s/g;
var str = "fee fi fo fum";
var myarr = str.match(re);
console.log(myarr);

输出结果

1
["fee+空格", "fi+空格", "fo+空格"]

  • eg2(综合性实例)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    // names中不同名字之间有多个空白字符、制表符等不可见字符
    var names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ; Chris Hand ";
    console.log("===========original string==============\n" + names);


    var pattern = /\s*;\s*/;
    var namelist = names.split(pattern);
    // console.log(namelist);

    // 将匹配到的结果存起来作为$1和$2
    var newpattern = /(\w+)\s+(\w+)/;
    newnamelist = [];

    for (var i = 0, len = namelist.length; i < len; i++) {
    // 名字颠倒
    newnamelist[i] = namelist[i].replace(newpattern, "$2, $1");
    }

    console.log(newnamelist);

    // 按照字母表排序
    newnamelist.sort();
    console.log(newnamelist);
  • 需要注意的就是函数split()replace()的使用。

  • 如果是带有括号的,那么匹配的结果将存放在$1 $2$n
Donate comment here