知向前端
正则表达式大总结
2015-3-22 Jon
*一、正则的使用:

    // 规则

         变量          模式      标志

    var expression = / pattern / flags ;

    var pattern3 = /\.at/gi;//点表示任意一个字符

    var pattern2 = new RegExp("[bc]at", "i");

    // 三个标志

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

    i://表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;

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

    // 必须使用\转义的元字符

    ( [ { \ ^ $ | ) ? * + .]}

    // 用例

    //匹配所有"bat"或"cat",不区分大小写

    var pattern2 = /\[bc\]at/gi;

    // 正则的方法

    reg.exec(txt);//返回匹配的位置和字符

    reg.test(txt);//txt为要比较的字符串,返回boolean值



  案例:

    1、使用方法1

        var str="fjksjd32 ew34 f3 fdsjf 35454 34f";

        var re=/3/g;

        alert(str.match(re))//返回所有 3 字符

    2、使用方法2

        var str="fjksjd32 ew34 f3 fdsjf 35454 34f";

        var re=/j/g;

        alert(str.search(re))//返回第一个 j 出现的下标 1

    3、方法3:敏感词过滤

        var str="介绍:呵呵公司哈哈电话是什么 嘿嘿排名"

        var re=/呵呵|哈哈|嘿嘿/g;

        alert(str.replace(re,'***'));

    4、方法4:邮箱校验

        var re=/^\w+@[a-z0-9]+\.[a-z]+$/i;

        if(re.test(input.value)){

          alert('成功');

        }

        else{

          alert('失败');

        }



*二、RegExp()正则的规则:

    // 以/^开始,以$/结束

    [a-z] //匹配所有的小写字母

    [A-Z] //匹配所有的大写字母

    [a-zA-Z] //匹配所有的字母

    [0-9] //匹配所有的数字

    [0-9\.\-] //匹配所有的数字,句号和减号

    [ \f\r\t\n] //匹配所有的白字符

    // 当在一组方括号里使用^是,它表示"非"或"排除"的意思

    var reg=/^[^0-9][0-9]$///表示第一个字符不为数字

    [^a-z] //除了小写字母以外的所有字符

    [^\\\/\^] //除了(\)(/)(^)之外的所有字符

    [^\"\'] //除了双引号(")和单引号(')之外的所有字符

    ^[a-zA-Z_]$ 所有的字母和下划线

    ^[[:alpha:]]{3}$  所有的3个字母的单词

    ^a$ 字母a

    ^a{4}$  aaaa

    ^a{2,4}$  aa,aaa或aaaa

    ^a{1,3}$  a,aa或aaa

    ^a{2,}$ 包含多于两个a的字符串

    ^a{2,}  如:aardvark和aaab,但apple不行

    a{2,} 如:baad和aaa,但Nantucket不行

    \t{2} 两个制表符

    .{2}  所有的两个字符

    ^[a-zA-Z0-9_]{1,}$ //所有包含一个以上的字母、数字或下划线的字符串

    ^[0-9]{1,}$ //所有的正数

    ^\-{0,1}[0-9]{1,}$ //所有的整数

    ^\-{0,1}[0-9]{0,}\.{0,1}[0-9]{0,}$ //所有的小数

    /\b([a-z]+) \1\b/gi 一个单词连续出现的位置。

    /(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径。

    /^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置。

    /[-a-z]/  A至z共26个字母再加一个-号。

    /ter\b/ 可匹配chapter,而不能匹配terminal。

    /\Bapt/ 可匹配chapter,而不能匹配aptitude。

    /Windows(?=95 |98 |NT )/  可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。

    /^\s*$/ 匹配空行。

    /\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。

    /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。



*三、RegExp()实践:

    // 邮箱的正则

      var Email=/^([a-z0-9_]*[-_]?[a-z0-9_]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?$/i;

    // 复杂用户名的正则

      var userName=/^([\@-a-z0-9_]){5,25}([\.][a-z]{2,3})?([\-][a-z]+)?$/i;

    // 复杂密码的正则

      var password=/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/;

    匹配国内电话号码:

      \d{3}-\d{8}|\d{4}-\d{7}

    验证手机号码:

      /^1[3|5|7|8|][0-9]{9}$/;

    电话号码与手机号码同时验证:

      (^(\d{3,4}-)?\d{7,8})$|(1[3|5|7|8|][0-9]{9})

    匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

    匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />

    匹配中文字符的正则表达式: [\u4e00-\u9fa5]

    匹配双字节字符(包括汉字在内):[^\x00-\xff]

    匹配空白行的正则表达式:\n\s*\r

    匹配首尾空白字符的正则表达式:^\s*|\s*$

    匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

    匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

    匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

    匹配腾讯QQ号:[1-9][0-9]{4,}

    匹配中国邮政编码:[1-9]\d{5}(?!\d)

    匹配身份证:\d{15}|\d{18}

    匹配ip地址:\d+\.\d+\.\d+\.\d+

    ^[1-9]\d*$    //匹配正整数

    ^-[1-9]\d*$   //匹配负整数

    ^-?[1-9]\d*$   //匹配整数

    ^[1-9]\d*|0$  //匹配非负整数(正整数 + 0)

    ^-[1-9]\d*|0$   //匹配非正整数(负整数 + 0)

    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$   //匹配正浮点数

    ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$  //匹配负浮点数

    ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$  //匹配浮点数

    ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$   //匹配非负浮点数(正浮点数 + 0)

    ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$  //匹配非正浮点数(负浮点数 + 0)

    ^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

    ^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

    ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

    ^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

    ^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

    评注:最基本也是最常用的一些表达式



*四、php正规表达式内置的通用字符簇

    [[:alpha:]] 任何字母

    [[:digit:]] 任何数字

    [[:alnum:]] 任何字母和数字

    [[:space:]] 任何空白字符

    [[:upper:]] 任何大写字母

    [[:lower:]] 任何小写字母

    [[:punct:]] 任何标点符号

    [[:xdigit:]]  任何16进制的数字,相当于[0-9a-fA-F]


发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容