美文网首页
克服正则的学习的恐惧症

克服正则的学习的恐惧症

作者: love2013 | 来源:发表于2016-10-08 23:52 被阅读18次

    前端时间的自学的时候,怎么没吃透正则的用法,最近js有一定的提高,开始有时间补充漏洞的时候!

    1.何为正则呢?

    正则也叫规则,让计算机能识别人类的规则

    2.正则的操作那些呢?---字符串的

    3.正则的表达式:

    var str=/正则表达式/;

    var str=new RegExp("","");是字符串形式,当正则需要传参的时候,用正则的全称的写法

    4.正则的常用的方法

    test:正则去匹配字符串,如果匹配成果就返回时真true,反而时false

    写法:正则.test(字符串);

    例:

    var str = 'abcdef';

    var re = /b/;

    alert( re.test(str) );*/---true;

    /*\s : 空格

    \S : 非空格

    \d : 数字

    \D : 非数字

    \w : 字符  ( 字母 ,数字,下划线_ )

    \W : 非字符*/

    var str = '374829348791';

    var re = /\D/;

    if( re.test(str) ){

    alert('不全是数字');

    }

    else{

    alert('全是数字');

    }

    search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1

    search的写法 : 字符串.search(正则)

    正则中的默认 : 是区分大小写的

    如果不区分大小写的话,在正则的最后加标识 i

    var str = 'abcdef';

    var re = /B/i;

    //var re = new RegExp('B','i');

    alert( str.search(re) );

    match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null

    match的写法 : 字符串.match(正则)

    正则默认:正则匹配成功就会结束,不会继续匹配

    如果想全部查找,就要加标识 g(全局匹配)

    量词 : 匹配不确定的位置

    +至少出现一次

    var str = 'haj123sdk54hask33dkhalsd879';

    var re = /\d+/g;

    alert( str.match(re) );

    replace : 正则去匹配字符串,匹配成功的字符去替换成新的字符串,replace : 第二个参数:可以是字符串,也可以是一个回调函数

    replace的写法 : 字符串.replace(正则,新的字符串)

    var str = 'aaa';

    var re = /a+/g;

    str = str.replace(re,'b');

    alert(str);

    | : 或的意思

    敏感词过滤:

    window.onload = function(){

    var aT = document.getElementsByTagName('textarea');

    var oInput = document.getElementById('input1');

    var re = /菲称|中国船|监视之下/g;

    oInput.onclick = function(){

    //aT[1].value = aT[0].value.replace(re,'*');

    aT[1].value = aT[0].value.replace(re,function(str){

    //函数的第一个参数:就是匹配成功的字符

    //alert( str );

    var result = '';

    for(var i=0;i

    匹配子项 : 小括号 ()  (还有另外一个意思,分组操作)

    把正则的整体叫做(母亲)

    //然后把左边第一个小括号里面的正则,叫做这个第一个子项(母亲的第一个孩子)

    //第二个小括号就是第二个孩子

    例:

    var str = '2013-6-7';

    var re = /(\d+)(-)/g;

    str = str.replace(re,function($0,$1,$2){

    //第一个参数:$0(母亲),第二个参数 : $1(第一个孩子)

    //,第二个参数 : $1(第二个孩子)

    //alert( $2 );

    //return $1 + '.';

    return $0.substring(0,$0.length-1) + '.';

    });

    alert( str );  //2013.6.7

    例2:

    var str = 'abc';

    var re = /(a)(b)(c)/;

    alert( str.match(re) );  //[abc,a,b,c](当match不加g的时候才可以获取到子项的集合)

    字符类 : 一组相似的元素  [] 中括号的整体代表一个字符

    例:

    var str = 'abdc';

    var re = /a[bde]c/;

    alert( re.test(str) );*/

    排除 : ^ 如果^写在[]里面的话,就代表排除的意思

    /*var str = 'abc';

    var re = /a[^bde]c/;

    alert( re.test(str) );*/

    var str = 'abc';

    var re = /a[a-z0-9A-Z]c/;

    alert( re.test(str) );

    获取class的方法

    找重复项最多的字符和个数

    var str = 'assssjdssskssalsssdkjsssdss';

    var arr = str.split('');

    str = arr.sort().join('');

    //alert(str);

    var value = '';

    var index = 0;

    var re = /(\w)\1+/g;

    str.replace(re,function($0,$1){

    //alert($0);

    if(index<$0.length){

    index = $0.length;

    value = $1;

    }

    });

    alert('最多的字符:'+value+',重复的次数:'+index);

    //量词 : {}

    /*{4,7}  : 最少出现4次,最多出现7次

    {4,} : 最少出现4次

    {4} : 正好出现4次

    + : {1,}  //\d{1,}

    ? : {0,1}  : 出现0次或者1次

    * : {0,}  : 至少出现0次*/

    常用的正则表达式

    高级表单校验

    匹配中文:[\u4e00-\u9fa5]

    行首行尾空格:^\s*|\s*$

    Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$

    网址:[a-zA-z]+://[^\s]*

    QQ号:[1-9][0-9]{4,9}

    邮政编码:[1-9]\d{5}

    身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x

    把方法包在一个空间里

    有人管他叫——命名空间

    在公司里,把同一类方法,包在一起

    JSON的使用

    把之前的方法,包在一起

    总结:

    1 . 修饰词

    i  :匹配时忽略大小写

    g : 匹配时全局匹配,查找所有匹配项,而非查找到一个既停止

    2 . 匹配模式

    方括号

    ---方括号用于查找某个范围内的字符:

    表达式描述

    [abc]查找方括号之间的任何字符。

    [^abc]查找任何不在方括号之间的字符。

    [0-9]查找任何从 0 至 9 的数字。

    [a-z]查找任何从小写 a 到小写 z 的字符。

    [A-Z]查找任何从大写 A 到大写 Z 的字符。

    [A-z]查找任何从大写 A 到小写 z 的字符。

    [adgk]查找给定集合内的任何字符。

    [^adgk]查找给定集合外的任何字符。

    (red&|blue&|green)    查找任何指定的选项。

    转义字符

    ---转义字符Metacharacter)是拥有特殊含义的字符:

    .查找单个字符,除了换行和行结束符。

    \w查找单词字符。

    \W查找非单词字符。

    \d查找数字。

    \D查找非数字字符。

    \s查找空白字符。

    \S查找非空白字符。

    \b匹配单词边界。

    \B匹配非单词边界。

    \0查找 NUL 字符。

    \n查找换行符。

    \f查找换页符。

    \r查找回车符。

    \t查找制表符。

    \v查找垂直制表符。

    \xxx查找以八进制数 xxx 规定的字符。

    \xdd查找以十六进制数 dd 规定的字符。

    \uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

    量词描述

    n+匹配任何包含至少一个 n 的字符串。

    n*匹配任何包含零个或多个 n 的字符串。

    n?匹配任何包含零个或一个 n 的字符串。

    n{X}匹配包含 X 个 n 的序列的字符串。

    n{X,Y}匹配包含 X 或 Y 个 n 的序列的字符串。

    n{X,}匹配包含至少 X 个 n 的序列的字符串。

    n$匹配任何结尾为 n 的字符串。

    ^n匹配任何开头为 n 的字符串。

    ?=n匹配任何其后紧接指定字符串 n 的字符串。

    ?!n匹配任何其后没有紧接指定字符串 n 的字符串。

    RegExp 对象方法

    方法描述

    compile编译正则表达式。

    exec检索字符串中指定的值。返回找到的值,并确定其位置。

    test检索字符串中指定的值。返回 true 或 false。

    支持正则表达式的 String 对象的方法

    方法描述

    search检索与正则表达式相匹配的值。

    match找到一个或多个正则表达式的匹配。

    replace替换与正则表达式匹配的子串。

    split把字符串分割为字符串数组。

    原文链接:http://www.jianshu.com/p/4fb6354708e6

    一、什么是正则表达式(Regular Expression)

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑( 即用这种方法来匹配想要的东西)。

    文/XZ阳光小熊(简书作者)

    原文链接:http://www.jianshu.com/p/786938bb6d6f

    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

    相关文章

      网友评论

          本文标题:克服正则的学习的恐惧症

          本文链接:https://www.haomeiwen.com/subject/fehpyttx.html