您现在的位置是:首页 > 技术学习 > javascript 网站首页 技术学习 javascript

JS中的正则

简介 正则可以规定在文本或字符串中要检索或替换的内容,可以是表达式的形式。然后可以在文本或字符串中匹配自己给定好的内容。

正则可以规定在文本或字符串中要检索或替换的内容,可以是表达式的形式。然后可以在文本或字符串中匹配自己给定好的内容。

1. JS中的正则表达式写法

1. var reg = new RegExp('表达式',flag);
2. var reg = /表达式/flag;

注:
    flag:修饰符,修饰符可以同时写多个。
        1. i : 忽略大小写;
        2. g : 全局匹配;
        3. m : 多行匹配;  

2. 正则中字符的含义

.  : 任意字符(除换行符外);
\d : 数字0-9;
\D : 非数字0-9的字符;
\w : 0-9或a-z或A-Z或_ ;
\W : 除数字字母下划线以外的字符;
\s : 空格、TAB、换页符、换行符;
\S : 非\s;
\r : 回车;
\n : 换行;
\v : 垂直制表符;
\t : 制表符;
\f : 换页符;

3. 正则中的选择、分组

1. | : 选择(或); 
    // 例:/ab|cd/ 表示匹配ab或者cd,只要一个匹配就能匹配成功;
2. () : 分组;正则中的(),先正常匹配,然后把匹配到的值以括号为单位分组;
    // 返回值里面会以括号为单位进行分组后以数组形式返回。可以用下标取到里面对应的值;

例:

var str = 'aabbccdd';

var reg1 = /(aa)(bb)/ ;
str.match(reg1); 
    // ['aabb','aa','bb']; 不仅匹配到了aabb还把两个括号中匹配到的值分别显示了出来。 

var reg2 = /aa(bb)/;
str.match(reg2); // [aabb, bb]

var reg3 = /(a+)(b)+(c)+/;
str.match(reg3); // ['aabbcc','aa','b','c']

var reg4 = /(a)(b)(c)/;
str.match(reg4); // null,没匹配到'abc',也不会分组;

4. 正则中的范围符号

[] : 字符范围内; 
    // 例:[0-9]数字0-9;[a-n]小写字母a到n;[0-9A-Za-z]数字0-9小写a-z大写A-Z;
[^] : 字符范围外;
    // 例:[^0-9]数字0-9以外的字符;
^ : 行首(书写时写在开头);
    // 例:^Hi以Hi开头的字符;^[0-9]以数字0-9开头的字符;^[^0-9]以非数字开头的字符;
$ : 行尾(书写时写在最后);
    // 例: Hi$以Hi结尾的字符;
\b : 单词边界;
    // 例:\bhello匹配前面有空格的单词hello;
\B : 非\b;
    // 例:\Bhello匹配前面没有空格的单词hello;
[\u4e00-\u9fa5] : 匹配中文;

5. 正则中的量词

{n,m} : 最少出现n次,最多出现m次;
 {n,} : 最少出现n次;
 {,m} : 最少出现0次(既没有),最多出现m次;
  {n} : 刚好出现n次;
    ? : 代表{0,1};
    * : 代表{0,};
    + : 代表{1,};

例:/a{5}/ 表示正好连续出现5个小写a的字符;

6. 正则中的字符串转译

\ : 用于转译字符;(即通常在"\"后面的字符不按原来意义解释)

有时候我们匹配一些特殊的字符时,比如:.,\,/,^,$,+,?,|,(,[,),{,],}等有特殊含义的字符时,需要加上 \ 进行转译,将其转译为单纯的一个字符 。

例:当我们要匹配一个美元符 $ 时,不能直接写 $ ,因为一个 $ 代表行尾,所以要用 \$ 这代表单纯匹配一个美元符。

7. 正则常用的函数

1. search(); // 返回首次匹配到的值的下标。
    str.search(reg); 
2. match();  // 返回首次匹配的值,若正则表达式里面有用g声明全局匹配,则返回所有满足匹配条件的值。
    str.match(reg);    // 返回值是一个数组 
    var a = 'aabcfa';
    var reg1 = /a/;
    var reg2 = /a/g;
    a.match(reg1); // ['a'];
    a,match(reg2); // ['a','a','a'];
3. replace(正则,替换内容);  // 替换首次匹配到的值,若正则声明全局匹配,则替换所有匹配到的值;
    var a = 'aabbcca';
    var reg1 = /a/;
    var reg2 = /a/g;
    a.replace(reg1,'b'); // babbcca;
    a.replace(reg2,'b'); // bbbbccb;
4. test();  // 用于检测能否匹配到值,返回值为布尔值,匹配到为true;否则为false;
    // 注: 使用方法是正则写在前面,字符串写括号里
        reg.test(str); 

        var a = 'abc';
        var reg1 = /a/;
        var reg2 = /d/;
        reg1.test(a);  // true;
        reg2.test(a);  // false;

个人CSDN博客

Top