正则表达式

字符串操作:
strObj.charAt(index) 返回 字符/''
strObj.indexOf(字符) 返回 下标/-1
strObj.lastIndexOf(字符) 返回 下标/-1
strObj.substring(start,end) 返回 字符/''
strObj.split(规则) 返回 数组/长度为1的数组
strObj.toUpperCase('bmw') 返回 字符
strObj.toLowerCase()
strObj.charCodeAt(index) 返回 数字(code)
String.fromCharCode(code) 返回 字符/''
strObj.replace(要替换的字符,替换后的字符) 返回 字符/''
strObj.replace(要替换的字符,function(s){
s == 每次找到的 要替换的字符
})

新的字符方法:(常用于正则)
strObj.search(字符|正则) 相当于~~ indexOf
strObj.match(字符|正则) 返回 数组/null
正则的方法:
re.test(字符) true/false
*** 只找到一组满足需求的,就是true

正则:表达式、规则 (regular expression)
干嘛的: 操作字符的
区别: 正则只是个规则,字符方法是具体的实施
场景: 邮箱校验,手机号,身份号...
推荐: 操作字符的情况,都用正则,性能更优

正则公共特性:
惰性匹配(懒,笨):默认情况只找一个
贪婪原则 1个我要,多了我也要
匹配: 默认情况下左到右一个一个整体匹配
*** 行首行尾,建议永远都加上

创建正则对象:
var re = new RegExp('规则','选项') js风格
var re = /规则/选项 perl风格

规则:
量词: 默认情况只管前面一个,一组

        {n}     正好n次
        {n,m}   n到m个
        {n,}    至少n次,多了不限
        {0,m}   至多m次,少了不限
        +       一次,或者多次 {1,}
        *       任意次 {0,}    不推荐
        ?       有或者无    {0,1}

或: | 优先级很低

修饰:

    ^   行首
    $   行尾
    \b  单词边界  (boundary)    一个单词两个边界
    能把单词分开,都是boundary,不是单词的,就是单词边界
    _ 是个单词  -不是单词

方括号: []

    里面的内容任选一个,不可都选
    -   多少到多少
    []里面  加\ 为了好记忆,目标去了功能

    ^ 在方括号里面:   排除,写在最前面,排除后面所有

分组:()
要处理的内容编组

选项:
i ignore(忽略大小写)
g global(全局查找)
m muti-line(多行模式)

转义:

    js:     
            \ 就是转义本身
            \n n被转义
            \nX X不被转义
            ***     \xX  X不转义, 不是所有的x都会被转义
            如果需要\(转义本身)出现       \\
    正则:
            \d  digital(数字) [0-9]
            \w  word(单词)    英文数字下划线 [a-zA-Z0-9_]
            \s  space(空白字符)
            .   任意字符

            \W  非单词
            \D  非数字
            \S  非空白字符

            \   如果需要\本身出现,再加\   

            \u

你可能感兴趣的:(正则表达式)