Home  >  Article  >  Backend Development  >  Regular knowledge points

Regular knowledge points

小云云
小云云Original
2017-12-08 15:12:541243browse

正则表达式,又称规则表达式,计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

许多程序设计语言都支持利用正则表达式进行字符串操作。

正则的两种写法:

第一种(标准写法):
new RegExp(规则,修饰符);

第二种(简写):
/规则/

  • d:一个数字

  • D:一个非数字

  • w:一个数字、字母、下划线

  • W:一个非数字、字母、下划线

  • n:换行

  • s:空格

  • S:非空格

  • b:边界符

  • .:任意字符除了n

  • []:在中括号里任意选择一个字符。

  • [^]:排除

  • {}:量词范围

  • {0,1}/?:最小可以没有最大1个

  • {0,}/*:最小没有,最大无限

  • {1,}/+:最小1个,最大无限

  • {n}:固定的次数

  • 修饰符:i ->  忽略大小写。

  • 转义符:\

正则的方法-text

test:检测是否正则匹配的内容,如果正则成立那么返回一个布尔值。

  • 正则.test(string);

    var str = 'RegExp';
    var re = new RegExp('p','i');
    console.log(re.test(str));

字符串方法-match

match:将匹配到的字符放到一个数组中。

string.match(正则);

当匹配到的字符只有一个的时候,会显示出多个属性

index: 匹配字符的位置

input: 所有内容

而length为1

  • match如果找不到返回null

    var str = 'das37213dsa321hjkh321321';
    console.log(str.match(/\d+/g))

字符串的方法-search

search:找到(可以指定也可以正则匹配)匹配的字符位置。

sting.search(字符串||正则);

    var str = 'aacabca523c';
    console.log(str.search(/\d/));
  • search如果找不到返回-1

字符串方法-replace

replace:replace

string.replace(要替换谁||可以用正则,替换成什么||函数);

返回值为替换好的字符串。

注意:
如果使用函数,那么一定要有retrun,不然为undefind

一般情况下

函数内的第一个参数是当前匹配的字符。

函数内的第二个参数是当前匹配的索引值。

函数内的第三个参数是当前总的字符串。

函数内的第四个以后参数都为undefined。

    var str = '中国共产党,习近平总书记说:“法轮功是邪教!”';
    str.replace(/中国共产党|习近平|法轮功|邪教/g,function($0,$1,$2,$3,$4){
        console.log($0,$1,$2,$3,$4);
    });

子项 - ()

从左往右数

如果正则中有子项

从函数的第一个参数之后就是匹配到的子项值,
当参数的个数等于子项个数+1的时候,之后都为正常模式下的参数了(比如:索引,整个字符,undefined..)

    var str = '2017/2/17';
    var str = str.replace(/(\d+)\D+(\d+)\D+(\d+)/,function($0,$1,$2,$3){
        //console.log($1,$2,$3);
        return $1 + '年' + $2 + '月' + $3 + '日';
    });
    
    console.log(str);

子项重定向

    var str = 'ssssssssaaaaaabbbbbb';
    str.replace(/(\w)\1+/g,function($0,$1){
        console.log($1);
    });

                                               


正则的两种写法:

第一种(标准写法):
new RegExp(规则,修饰符);

第二种(简写):
/规则/

  • d:一个数字

  • D:一个非数字

  • w:一个数字、字母、下划线

  • W:一个非数字、字母、下划线

  • n:换行

  • s:空格

  • S:非空格

  • b:边界符

  • .:任意字符除了n

  • []:在中括号里任意选择一个字符。

  • [^]:排除

  • {}:量词范围

  • {0,1}/?:最小可以没有最大1个

  • {0,}/*:最小没有,最大无限

  • {1,}/+:最小1个,最大无限

  • {n}:固定的次数

  • 修饰符:i ->  忽略大小写。

  • 转义符:\

正则的方法-text

test:检测是否正则匹配的内容,如果正则成立那么返回一个布尔值。

  • 正则.test(string);

    var str = 'RegExp';
    var re = new RegExp('p','i');
    console.log(re.test(str));

字符串方法-match

match:将匹配到的字符放到一个数组中。

string.match(正则);

当匹配到的字符只有一个的时候,会显示出多个属性

index: 匹配字符的位置

input: 所有内容

而length为1

  • match如果找不到返回null

    var str = 'das37213dsa321hjkh321321';
    console.log(str.match(/\d+/g))

字符串的方法-search

search:找到(可以指定也可以正则匹配)匹配的字符位置。

sting.search(字符串||正则);

    var str = 'aacabca523c';
    console.log(str.search(/\d/));
  • search如果找不到返回-1

字符串方法-replace

replace:replace

string.replace(要替换谁||可以用正则,替换成什么||函数);

返回值为替换好的字符串。

注意:
如果使用函数,那么一定要有retrun,不然为undefind

一般情况下

函数内的第一个参数是当前匹配的字符。

函数内的第二个参数是当前匹配的索引值。

函数内的第三个参数是当前总的字符串。

函数内的第四个以后参数都为undefined。

    var str = '中国共产党,习近平总书记说:“法轮功是邪教!”';
    str.replace(/中国共产党|习近平|法轮功|邪教/g,function($0,$1,$2,$3,$4){
        console.log($0,$1,$2,$3,$4);
    });

子项 - ()

从左往右数

如果正则中有子项

从函数的第一个参数之后就是匹配到的子项值,
当参数的个数等于子项个数+1的时候,之后都为正常模式下的参数了(比如:索引,整个字符,undefined..)

    var str = '2017/2/17';
    var str = str.replace(/(\d+)\D+(\d+)\D+(\d+)/,function($0,$1,$2,$3){
        //console.log($1,$2,$3);
        return $1 + '年' + $2 + '月' + $3 + '日';
    });
    
    console.log(str);

子项重定向

    var str = 'ssssssssaaaaaabbbbbb';
    str.replace(/(\w)\1+/g,function($0,$1){
        console.log($1);
    });

相关推荐:

最全的前端常用正则表达式汇总

正则表达式的的实现步骤

php正则表达式入门详解

The above is the detailed content of Regular knowledge points. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn