Javascript正则表达式

278 阅读2分钟

#正则表达式

        // 利用RegExp对象来创建正则表达式
        var regexp = new RegExp(/abc/) // 实例化出来了一个正则对象

        // 字面量方式直接创建
        var rg = /abc/;

        // 怎么使用正则对象
        // .test()测试的意思
        // 在.test后面的括号里传递一个参数
        // 可以测试里面有没有这个参数
        // 如果有返回true如果没有返回false
        // 这个是正则表达式上面自带的
        // test进行搜索 搜索abc 里面是否包含(abc)
        console.log(regexp.test('abc'))
        console.log(regexp.test('ababbc'))
        console.log(regexp.test('aabcaa'))
        console.log(rg.test('abc'))

#边界符

        // var rg = /abc/;
        // console.log(rg.test("abc")); // true
        // console.log(rg.test("abcd")); // true
        // console.log(rg.test("adbcd")); // false
        // console.log(rg.test("aabcd")); // true

        // 边界符 ^:以什么什么为开头
        // var reg = /^abc/ // 以a开头后面紧跟着bc 或者以abc开头
        // console.log(reg.test("abc")); // true
        // console.log(reg.test("abcd")); // true
        // console.log(reg.test("dabc")); // false
        // console.log(reg.test("aabc")); // false

        // 边界符 $:以什么什么结尾
        var reg1 = /abc$/ // 以c结尾 前面紧跟着b和a
        console.log(reg1.test('abcd')) // false
        console.log(reg1.test("abc")) // true
        console.log(reg1.test('abcc')) // false

#字符类

        // var reg = /abc/ []
        // var reg = /[abc]/ // 代表着只要包含a 或者包含b 或者包含c 都会返回true
        // console.log(reg.test("hgjhgja")) // true
        // console.log(reg.test("b")) // true
        // console.log(reg.test("baby")) // true
        // console.log(reg.test("angel")) // true

        // 结合
        // var reg1 = /^[abc]$/; //只有a 或者b 或者c
        // console.log(reg1.test("a")) // ture 只能以什么开头就以什么结尾
        // console.log(reg1.test("aa")) // false
        // console.log(reg1.test("bb")) // false
        // console.log(reg1.test("b")) // ture
        // console.log(reg1.test("c")) // ture
        // console.log(reg1.test("abc")) // false

        // 只能是26个英文字母, 并且是小写的
        // var reg1 = /^[a-z]$/ // 只能是26个英文字母中某一个字母,并且是小写的,才能返回true
        // console.log(reg1.test("a")) // true
        // console.log(reg1.test("aa")) // false
        // console.log(reg1.test("1")) // false

        // var reg2 = /^[a-zA-Z0-9_-]$/ // 26个大小写英文字母和数字_-的某一个都会返回true
        // console.log(reg2.test("-")) // true
        // console.log(reg2.test("!")) // false
        // console.log(reg2.test(5)) // true
        // console.log(reg2.test("a")) // true
        // console.log(reg2.test("A")) // true

        // 需要特别注意 如果^符号写到[]里面 就是取反的意思 已经不是在以什么什么开头的意思
        var reg2 = /^[^a-zA-Z0-9_-]$/ // 如果在[]里面写上^那就是取反
        console.log(reg2.test("-")) // false
        console.log(reg2.test("!")) // true
        console.log(reg2.test(5)) // false
        console.log(reg2.test("a")) // false
        console.log(reg2.test("A")) // false

#量词

        // var reg = /^a$/ // 只能是一个字符a 以a开头以a结尾
        // console.log(reg.test('a')) // true
        // console.log(reg.test('aa')) // false

        // 学习量词
        // *符号代表那个词可以出现0次或者出现多次
        // * >= 0 可以出现0次或者出现多次
        // var reg1 = /^a*$/
        // console.log(reg1.test("")) // a可以出现0次所以为true
        // console.log(reg1.test("aaaaaaa")) // true
        // console.log(reg1.test("aabc")) // false

        // +符号代表那个词必须出现1次或者多次
        // + >= 1
        // var reg2 = /^a+$/
        // console.log(reg2.test("")) // false 这个符号最少出现一次
        // console.log(reg2.test("a")) // true
        // console.log(reg2.test("aaaaa")) // true
        // console.log(reg2.test("aaabc")) // false

        // ?符号代表那个词有0次或者1次
        // 0 <= ? <= 1
        // var reg3 = /^a?$/
        // console.log(reg3.test("")) // true
        // console.log(reg3.test("a")) // true
        // console.log(reg3.test("aaaa")) // false

        // {数值}符号里面的数值代表那个词必须重复几次
        // var reg4 = /^a{3}$/
        // console.log(reg4.test("")) // false
        // console.log(reg4.test("aa")) // false
        // console.log(reg4.test("aaa")) // true
        // console.log(reg4.test("aaaa")) // false

        // {数值,}符号里面在数值后面加个逗号,代表这个词可以大于等于这个数值
        // var reg5 = /^a{3,}$/
        // console.log(reg5.test("aaa")) // true
        // console.log(reg5.test("aaaa")) // true
        // console.log(reg5.test("aaaaa")) // true
        // console.log(reg5.test("aa")) // false

        // {数值,数值}符号里面可以有两个数值
        // 第一个数值代表这个词的数量必须大于此数值
        // 第二个数值代表这个词的数量必须小于此数值
        var reg6 = /^a{3,8}$/
        console.log(reg6.test("aa")) // false
        console.log(reg6.test("")) // false
        console.log(reg6.test("aaa")) // true
        console.log(reg6.test("aaaaaa")) // true
        console.log(reg6.test("aaaaaaaaa")) // false
        console.log(reg6.test("aaaaaaaa")) // true

#括号

        // [] {} ()
        // ()符号就是优先执行的意思
        var reg = /^abc{3}$/
        // 想让abc重复三次
        console.log(reg.test("abcabcabc")) // false
        console.log(reg.test("abccc")) // true

        var reg = /^(abc){3}$/
        console.log(reg.test("abcabcabc")) // true
        console.log(reg.test("abccc")) // false

#字符串搜索并且替换

        var message = document.querySelector("#message")
        var btn = document.querySelector("button")
        var div = document.querySelector("div")
        btn.onclick = function(){
            // 点击时替换textarea中的敏感字
            //  | 或者
            // g:global 全局
            div.innerText = message.value.replace(/死|擦/g,"*")}