【正则】

1.什么是正则

正则表达式(规则表达式)  regular expression

    正则其实就是描述了一套规则,本质是操作字符串。

2.正则是干什么的? 操作字符串的

(1)模式匹配 (表单验证)

    (2)文本检索

    (3)替换

3.正则的好处(为什么用它)

简单,方便

    性能极高

4.字符串方法都有哪些

substring(开始位置,[结束位置])

    substr(开始位置,个数)

    slice(开始位置,[结束位置])

    charAt(下标)

    indexOf()

    lastIndexOf()

    split()  ---转数组

    toLowerCase()

    toUpperCase()

    replace(把谁,替换成谁)

    trim()  去除收尾空格
  1. 正则怎么使用
(1)  var reg=new RegExp('规则','选项');   通过构造函数创建(好处:可以放变量)

(2)  var reg=/规则/选项                  通过字面量创建  (不可以放变量)
  1. 字符串方法中使用正则的
(1)  str.search(正则);  搜索符合正则条件的字符串的下标  返回的是数字  没有找到返回-1

 类似indexOf 通过正则找下标

 (2)  str.match(正则)    挑,选出符合正则条件的字符串 返回的是数组  没有返回null

 (3.1)  str.replace(正则,替换成谁)  把符合正则条件的字符串替换成某个字符串

 (3.2)  str.replace(正则,function(s){

                s  //是符合正则条件的字符串

        })
  1. 选项(模式):
    g global 全局
    i ignore 不区分大小写
    m mutil-line 多行
    选项不区分顺序
  2. 转译字符(元字符)
\d    数字  [0-9]

\s    空格

\w    单词    [a-zA-Z0-9_]

\D  非数字  [^0-9]

\S  非空格

\W  非单词  [^a-zA-Z0-9_]

.代表所有,任意字符

\.  代表的是 .

\\  代表\

\\\\  \\

.\ / ? +  都要前面加 \ 转译

如:http//

转后:http//

  1. 量词
{n}  正好n个  \d{3}--->\d\d\d

 {n,m} 最少n个最多m个

 {n,}  最少n个 多了不限

 {,n}  错×  字符串的个数不能出现负数

 {1,}  +  若干个  最少1个多了不限

 {0,1}  ?  可以没有,最多一个

 {0,}  *  可以没有 多了不限

10.1 [ ]

有或的用法

    /[abc]/    /a|b|c/

    /a[bc]/  /ab|ac/

    /a[bc]d/  /abd|acd/

    /[a|b]/  a b |

10.2 范围的用法

/[a-z]/  abcde....z

     /[0-9]/  \d

    /[1-38]/  1 2 3 8

10.3. 排除

/[^0-9]/   表示排除0-9

总结: [ ]

1、[]里面的东西都是或的形式

       2、[]里面和放范围

       3、[^]  不代表行首,代表除去里面的范围

       4、其他特殊符号代表本身
  1. 修饰符
|  代表或

 ^  行首    注:如果^单独使用,代表字符串行首,配合m使用会识别段落

 $  行尾

12 ( )

1.分组()

        a+  aaaaa

        ab+  abbbbb

       (ab)+  abababab

  2 .匹配子级

        配合replace使用  str.replace(reg,function(s,a,b){

                        s是 整体

                        a是第一个括号的项

                        b是第二个括号的项

                })

  3.优选级   

  4. 重复的子项

       如:abbb       /(a)(b)\2+/    表示第二项重复

     aaaab       /(a)\1+(b)/    表示第一项重复
  1. 正则的校验
强校验

弱校验

14.正则有校验的方法

(1) 正则.test(字符串) 返回 true false

test() 一般配合^ &

        功能:用于检测是否于正则匹配。

        返回:布尔值,true匹配,false不匹配

        语法:reg.test(检测的内容)

(2)正则.exec(字符串)

功能:用于检测是否于正则匹配。

        返回:数组, 不匹配返回null

        语法:reg.test(检测的内容)
  1. 例子:
  2. QQ号校验 5-12
/[1-9]\d{4,11}/
  1. 座机号 : 区号-座机号 如:010或1012 0289
区号 (0[1-9]\d{1,2}-)?

    座机号  [1-9]\d{6,7}

    /^(0[1-9]\d{1,2}-)?[1-9]\d{6,7}$/
  1. 手机号
/1[3-57-9]\d{9}/
  1. 中文校验
[\u4e00-\u9fa5]

    一      龥

\u表示字符编码 4e00 和 9fa5 是十六进制编码