JavaScript 高级4 :正则表达式

js的高级笔记4:正则表达式、字符类、预定义类、正则替换replace 1.正则表达式概述 1.1什么是正则表达式 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。 正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。 其他语言也会使用正则表达式,本阶段我们主要是利用JavaScript 阅读详情

JavaScript 高级4 :正则表达式

Date: January 19, 2023
Text: 正则表达式、正则表达式特殊字符、正则表达式中的替换


目标:

能够说出正则表达式的作用

能够写出简单的正则表达式

能够使用正则表达式对表单进行验证

能够使用正则表达式替换内容




正则表达式概述

什么是正则表达式

**正则表达式( Regular Expression )**是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。

正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。

其他语言也会使用正则表达式,本阶段我们主要是利用 JavaScript 正则表达式完成表单验证。



正则表达式的特点

  1. 灵活性、逻辑性和功能性非常的强。

  2. 可以迅速地用极简单的方式达到字符串的复杂控制。

  3. 对于刚接触的人来说,比较晦涩难懂。比如: ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$

  4. 实际开发,一般都是直接复制写好的正则表达式. 但是要求会使用正则表达式并且根据实际情况修改正则表达式. 比如用户名: /1{3,16}$/




正则表达式在 JavaScript 中的使用

创建正则表达式

在 JavaScript 中,可以通过两种方式创建一个正则表达式。

1. 通过调用 RegExp 对象的构造函数创建

var 变量名 = new RegExp(/表达式/);

2. 通过字面量创建

var 变量名 = /表达式/;

// 注释中间放表达式就是正则字面量

  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            // 正则表达式在js中的使用
    
            // 1. 利用 RegExp对象来创建 正则表达式
            var regexp = new RegExp(/123/);
            console.log(regexp);
    
            // 2. 利用字面量创建 正则表达式
            var rg = /123/;
            // 3.test 方法用来检测字符串是否符合正则表达式要求的规范
            console.log(rg.test(123));
            console.log(rg.test('abc'));
        </script>
    </body>
    
    </html>
    


测试正则表达式 test

test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。

regexObj.test(str)
  1. regexObj 是写的正则表达式
  2. str 我们要测试的文本
  3. 就是检测str文本是否符合我们写的正则表达式规范.



正则表达式中的特殊字符

正则表达式的组成

一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如 /ab*c/ 。其中特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如 ^ 、$ 、+ 等。

特殊字符非常多,可以参考:

MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
jQuery 手册:正则表达式部分

正则测试工具: http://tool.oschina.net/regex

这里我们把元字符划分几类学习 。



边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。

Untitled

如果 ^ 和 $ 在一起,表示必须是精确匹配。

  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            // 边界符 ^ $ 
            var rg = /abc/; // 正则表达式里面不需要加引号 不管是数字型还是字符串型
            // /abc/ 只要包含有abc这个字符串返回的都是true
            console.log(rg.test('abc'));
            console.log(rg.test('abcd'));
            console.log(rg.test('aabcd'));
            console.log('---------------------------');
            var reg = /^abc/;
            console.log(reg.test('abc')); // true
            console.log(reg.test('abcd')); // true
            console.log(reg.test('aabcd')); // false
            console.log('---------------------------');
            var reg1 = /^abc$/; // 精确匹配 要求必须是 abc字符串才符合规范
            console.log(reg1.test('abc')); // true
            console.log(reg1.test('abcd')); // false
            console.log(reg1.test('aabcd')); // false
            console.log(reg1.test('abcabc')); // false
        </script>
    </body>
    
    </html>
    


字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内。

  1. [] 方括号
/[abc]/.test('andy')     // true

后面的字符串只要包含 abc 中任意一个字符,都返回 true 。

  1. [-] 方括号内部 范围符-
/^[a-z]$/.test(c')     // true

方括号内部加上 - 表示范围,这里表示 a 到 z 26个英文字母都可以。

  1. [^] 方括号内部 取反符^
/[^abc]/.test('andy')     // false

方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false 。

注意和边界符 ^ 区别,边界符写到方括号外面。

  1. 字符组合
/[a-z1-9]/.test('andy')     // true

方括号内部可以使用字符组合,这里表示包含 a 到 z 的26个英文字母和 1 到 9 的数字都可以。

  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            //var rg = /abc/;  只要包含abc就可以 
            // 字符类: [] 表示有一系列字符可供选择,只要匹配其中一个就可以了
            var rg = /[abc]/; // 只要包含有a 或者 包含有b 或者包含有c 都返回为true
            console.log(rg.test('andy'));
            console.log(rg.test('baby'));
            console.log(rg.test('color'));
            console.log(rg.test('red'));
            var rg1 = /^[abc]$/; // 三选一 只有是a 或者是 b  或者是c 这三个字母才返回 true
            console.log(rg1.test('aa'));
            console.log(rg1.test('a'));
            console.log(rg1.test('b'));
            console.log(rg1.test('c'));
            console.log(rg1.test('abc'));
            console.log('------------------');
    
            var reg = /^[a-z]$/; // 26个英文字母任何一个字母返回 true  - 表示的是a 到z 的范围  
            console.log(reg.test('a'));
            console.log(reg.test('z'));
            console.log(reg.test(1));
            console.log(reg.test('A'));
            // 字符组合
            var reg1 = /^[a-zA-Z0-9_-]$/; // 26个英文字母(大写和小写都可以)任何一个字母返回 true  
            console.log(reg1.test('a'));
            console.log(reg1.test('B'));
            console.log(reg1.test(8));
            console.log(reg1.test('-'));
            console.log(reg1.test('_'));
            console.log(reg1.test('!'));
            console.log('----------------');
            // 如果中括号里面有^ 表示取反的意思 千万和 我们边界符 ^ 别混淆
            var reg2 = /^[^a-zA-Z0-9_-]$/;
            console.log(reg2.test('a'));
            console.log(reg2.test('B'));
            console.log(reg2.test(8));
            console.log(reg2.test('-'));
            console.log(reg2.test('_'));
            console.log(reg2.test('!'));
        </script>
    </body>
    
    </html>
    


量词符

量词符用来设定某个模式出现的次数。

Untitled

  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            // 量词符: 用来设定某个模式出现的次数
            // 简单理解: 就是让下面的a这个字符重复多少次
            // var reg = /^a$/;
    
            //  * 相当于 >= 0 可以出现0次或者很多次 
            // var reg = /^a*$/;
            // console.log(reg.test(''));
            // console.log(reg.test('a'));
            // console.log(reg.test('aaaa'));
    
            //  + 相当于 >= 1 可以出现1次或者很多次
            // var reg = /^a+$/;
            // console.log(reg.test('')); // false
            // console.log(reg.test('a')); // true
            // console.log(reg.test('aaaa')); // true
    
            //  ?  相当于 1 || 0
            // var reg = /^a?$/;
            // console.log(reg.test('')); // true
            // console.log(reg.test('a')); // true
            // console.log(reg.test('aaaa')); // false
    
            //  {3 } 就是重复3次
            // var reg = /^a{3}$/;
            // console.log(reg.test('')); // false
            // console.log(reg.test('a')); // false
            // console.log(reg.test('aaaa')); // false
            // console.log(reg.test('aaa')); // true
            //  {3, }  大于等于3
            var reg = /^a{3,}$/;
            console.log(reg.test('')); // false
            console.log(reg.test('a')); // false
            console.log(reg.test('aaaa')); // true
            console.log(reg.test('aaa')); // true
            //  {3,16}  大于等于3 并且 小于等于16
            var reg = /^a{3,6}$/;
            console.log(reg.test('')); // false
            console.log(reg.test('a')); // false
            console.log(reg.test('aaaa')); // true
            console.log(reg.test('aaa')); // true
            console.log(reg.test('aaaaaaa')); // false
        </script>
    </body>
    
    </html>
    


案例:用户名验证

功能需求:

  1. 如果用户名输入合法, 则后面提示信息为 : 用户名合法,并且颜色为绿色
  2. 如果用户名输入不合法, 则后面提示信息为: 用户名不符合规范, 并且颜色为绿色

分析:

  1. 用户名只能为英文字母,数字,下划线或者短横线组成, 并且用户名长度为 6~16位.
  2. 首先准备好这种正则表达式模式 /$[a-zA-Z0-9-_]{6,16}^/
  3. 当表单失去焦点就开始验证.
  4. 如果符合正则规范, 则让后面的span标签添加 right 类.
  5. 如果不符合正则规范, 则让后面的span标签添加 wrong 类.
  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            span {
                color: #aaa;
                font-size: 14px;
            }
            
            .right {
                color: green;
            }
            
            .wrong {
                color: red;
            }
        </style>
    </head>
    
    <body>
        <input type="text" class="uname"> <span>请输入用户名</span>
        <script>
            //  量词是设定某个模式出现的次数
            var reg = /^[a-zA-Z0-9_-]{6,16}$/; // 这个模式用户只能输入英文字母 数字 下划线 短横线但是有边界符和[] 这就限定了只能多选1
            // {6,16}  中间不要有空格
            // console.log(reg.test('a'));
            // console.log(reg.test('8'));
            // console.log(reg.test('18'));
            // console.log(reg.test('aa'));
            // console.log('-------------');
            // console.log(reg.test('andy-red'));
            // console.log(reg.test('andy_red'));
            // console.log(reg.test('andy007'));
            // console.log(reg.test('andy!007'));
            var uname = document.querySelector('.uname');
            var span = document.querySelector('span');
            uname.onblur = function() {
                if (reg.test(this.value)) {
                    console.log('正确的');
                    span.className = 'right';
                    span.innerHTML = '用户名格式输入正确';
                } else {
                    console.log('错误的');
                    span.className = 'wrong';
                    span.innerHTML = '用户名格式输入不正确';
                }
            }
        </script>
    </body>
    
    </html>
    


括号总结

  1. 大括号 量词符. 里面表示重复次数
  2. 中括号 字符集合。匹配方括号中的任意字符.
  3. 小括号 表示优先级

可以在线测试: https://c.runoob.com/

  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            // 中括号 字符集合.匹配方括号中的任意字符. 
            // var reg = /^[abc]$/;
            // a 也可以 b 也可以 c 可以  a ||b || c
            // 大括号  量词符. 里面表示重复次数
            // var reg = /^abc{3}$/; // 它只是让c重复三次   abccc
            // console.log(reg.test('abc'));
            // console.log(reg.test('abcabcabc'));
            // console.log(reg.test('abccc'));
    
            // 小括号 表示优先级
            var reg = /^(abc){3}$/; // 它是让abcc重复三次
            console.log(reg.test('abc'));
            console.log(reg.test('abcabcabc'));
            console.log(reg.test('abccc'));
        </script>
    </body>
    
    </html>
    


预定义类

预定义类指的是某些常见模式的简写方式。

Untitled

案例:表单验证

分析:

  1. 手机号码: /^1[3|4|5|7|8][0-9]{9}$/
  2. QQ: [1-9][0-9]{4,} (腾讯QQ号从10000开始)
  3. 昵称是中文: 2{2,8}$
  • Code:

    window.onload = function() {
        var regtel = /^1[3|4|5|7|8]\d{9}$/; // 手机号码的正则表达式
        var regqq = /^[1-9]\d{4,}$/; // 10000
        var regnc = /^[\u4e00-\u9fa5]{2,8}$/;
        var regmsg = /^\d{6}$/;
        var regpwd = /^[a-zA-Z0-9_-]{6,16}$/;
        var tel = document.querySelector('#tel');
        var qq = document.querySelector('#qq');
        var nc = document.querySelector('#nc');
        var msg = document.querySelector('#msg');
        var pwd = document.querySelector('#pwd');
        var surepwd = document.querySelector('#surepwd');
        regexp(tel, regtel); // 手机号码
        regexp(qq, regqq); // qq号码
        regexp(nc, regnc); // 昵称
        regexp(msg, regmsg); // 短信验证
        regexp(pwd, regpwd); // 密码框
        // 表单验证的函数
        function regexp(ele, reg) {
            ele.onblur = function() {
                if (reg.test(this.value)) {
                    // console.log('正确的');
                    this.nextElementSibling.className = 'success';
                    this.nextElementSibling.innerHTML = '<i class="success_icon"></i> 恭喜您输入正确';
                } else {
                    // console.log('不正确');
                    this.nextElementSibling.className = 'error';
                    this.nextElementSibling.innerHTML = '<i class="error_icon"></i> 格式不正确,请从新输入 ';
                }
            }
        };
    
        surepwd.onblur = function() {
            if (this.value == pwd.value) {
                this.nextElementSibling.className = 'success';
                this.nextElementSibling.innerHTML = '<i class="success_icon"></i> 恭喜您输入正确';
            } else {
                this.nextElementSibling.className = 'error';
                this.nextElementSibling.innerHTML = '<i class="error_icon"></i> 两次密码输入不一致';
    
            }
        }
    
    }
    



正则表达式中的替换

replace 替换

replace() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式。

stringObject.replace(regexp/substr,replacement)
  1. 第一个参数: 被替换的字符串 或者 正则表达式
  2. 第二个参数: 替换为的字符串
  3. 返回值是一个替换完毕的新字符串
  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            textarea {
                width: 300px;
                height: 100px;
                border: 1px solid #ccc;
            }
        </style>
    </head>
    
    <body>
        <textarea name="" id="message"></textarea> <button>提交</button>
        <div></div>
        <script>
            // 替换 replace
            // var str = 'andy和red';
            // // var newStr = str.replace('andy', 'baby');
            // var newStr = str.replace(/andy/, 'baby');
            // console.log(newStr);
            var text = document.querySelector('textarea');
            var btn = document.querySelector('button');
            var div = document.querySelector('div');
            btn.onclick = function() {
                div.innerHTML = text.value.replace(/激情|gay/g, '**');
            }
        </script>
    </body>
    
    </html>
    


正则表达式参数

/表达式/[switch]

switch(也称为修饰符) 按照什么样的模式来匹配. 有三种值:

g:全局匹配

i:忽略大小写

gi:全局匹配 + 忽略大小写



案例:敏感词过滤

  • Code:

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            textarea {
                width: 300px;
                height: 100px;
                border: 1px solid #ccc;
            }
        </style>
    </head>
    
    <body>
        <textarea name="" id="message"></textarea> <button>提交</button>
        <div></div>
        <script>
            // 替换 replace
            // var str = 'andy和red';
            // // var newStr = str.replace('andy', 'baby');
            // var newStr = str.replace(/andy/, 'baby');
            // console.log(newStr);
            var text = document.querySelector('textarea');
            var btn = document.querySelector('button');
            var div = document.querySelector('div');
            btn.onclick = function() {
                div.innerHTML = text.value.replace(/激情|gay/g, '**');
            }
        </script>
    </body>
    
    </html>
    

  1. a-z0-9_- ↩︎

  2. \u4e00-\u9fa5 ↩︎

STM32F103四位数码管动态显示实战:从硬件连接到代码调试(附Proteus仿真) 本文详细介绍了STM32F103驱动四位数码管的动态显示技术,从硬件连接到代码调试的全过程。内容包括共阴/共阳数码管的区别、GPIO配置、动态显示原理及优化方法,并附有Proteus仿真验证。通过实战案例,帮助开发者快速掌握STM32数码管动态显示的核心技术。 阅读详情

相关推荐

vivado 工程修改芯片型号

vivado工程芯片与实际板子不匹配时,需要修改工程的芯片型号,并对原工程的ip进行同步更新,之后生成新的bit文件,烧录到板子中

k7126685的博客 1万+

正则表达式区间 上的”-“ 横线未转义引发的两个问题

过滤特殊字符:?& - : ,这五个字符: 如果没有进行转义会出现两种情况: 1.过滤结果不正确,未将 - 过滤掉 String reg = "?:&-,"; String str = "test?:&0:-,1-"; 结果:test0-1- 不能过滤出 - 2.报错:java.util.regex.PatternSyntaxException: Illegal...

janet1100的博客 2977

劳特巴赫 Trace32 调试使用教程

详细介绍如何使用trace32进行调试

m0_56208280的博客 4万+

java 正则表达式 非法字符,在正则表达式中获取非法字符范围:java

I have a simple regex pattern that verifies names. But When I run it I get illegal character range error. I thought by escaping "\s" it will allow a space but the compiler is still complaining.public ...

weixin_34915171的博客 684

玄机-Linux权限维持-后门

玄机-Linux权限维持-后门

m0_46439803的博客 763

Ubuntu视频播放器怎么选?VLC、mpv、SMPlayer硬解与字幕配置指南

在Linux系统中,视频播放体验取决于播放器、解码器与显卡驱动的协同。硬件解码通过VA-API或VDPAU将解码任务交给GPU,能显著降低CPU占用,解决4K高码率视频卡顿问题。对于Ubuntu用户,合理配置解码环境与播放器,可流畅播放HEVC、多音轨及ASS特效字幕视频。无论是日常观影、番剧追更还是家庭影院场景,选择合适的播放器并正确启用硬解,都是提升体验的关键。本文围绕Ubuntu平台,详解VLC、mpv、SMPlayer等播放器的安装、硬解配置与常见问题排查,帮助你在Linux上获得流畅的本地视频播放

weixin_33801856的博客 506

JS出现illegal character非法字符提示

引用js文件,js文件内的汉字在页面显示乱码 解决方式: a. 保持js文件编码与jsp页面编码格式一致; b. 在引入js文件时,在script中添加charset=""属性,指定你自己的编码; c. 将js文件中的汉字,转换成Uncode码,即将汉字替换成Uncode码(比较好用);如:“确定”可写成" \u65B0\u589E "。 转载于:https://www.cnblogs.c...

weixin_30813225的博客 1794

ros2 humble中使用realsense t265与d435

前提,安装realsense SDK 2.51.1版本并且能成功启动realsense-viewer V2.51.1想要在ros2中使用realsense t265,必须配合realsense SDK v2.51.1使用realsense-ros 4.51.1版本,因为新版本realsense ros2不再对t265支持下面记录源码编译安装 realsense-ros 4.51.1版本。

m0_72797388的博客 952

Illegal character

非法字符,从红色波浪线可以看出,括号是非法的,是中文的,不是英文括号解决: 修改括号为英文括号

expect521的博客 9761

从零开始:用这些公开数据集搞定电力AI项目(含鸟巢、绝缘子、负荷预测等33个实战资源)

本文系统梳理了电力AI领域33个精选公开数据集,涵盖目标检测、负荷预测等关键场景,如鸟巢检测、绝缘子缺陷识别等。通过实战案例解析数据预处理、模型选型及性能优化策略,帮助工程师快速构建端到端解决方案,解决电力AI项目中的数据获取与处理难题。

weixin_42522552的博客 216

华为OD机试双机位C卷-敌情监控 (Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【敌情监控】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 敌情监控。

qq_45776114的博客 938

c++错误代码

Ambiguous operators need parentheses -----------不明确的运算需要用括号括起 Ambiguous symbol ''xxx'' ----------------不明确的符号 Argument list syntax error ----------------参数表语法错误 Array bounds missing ------------------丢失数组界限符 Array size toolarge -------------

风的灵动的专栏 640

【FPGA教程案例96】控制案例1——基于FPGA的自适应PID控制器verilog实现

首先,我们复习下课程传统的PID控制器,往往存在调整速度较慢,超调过大等缺点。为了解决这个问题,在实际的PID应用中,需要实时的调整PID的控制参数,以达到加快PID控制速度,降低超调等目标。目前,自适应PID控制器,一般有误差反馈调整,模糊控制器调整,神经网络调整。其中模糊控制器调整,神经网络调整较为复杂,在入门案例中不做介绍,在本课程中,我们将实现相对略微简单点的基于误差反馈调整的自适应PID控制器。

FPGA/MATLAB学习教程/源码/项目合作开发 6201

JavaScript高级:4.正则表达式

正则表达式(Regular Expression )是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也 是对象。 正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。 其他语言也会使用正则表达式,本阶段我们主要是利用 JavaScript 正则表达式完成表单验证。在 JavaS

shiqing4387的博客 338

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【JavaScript高级04】正则表达式

day41.正则表达式概述1.1什么是正则表达式1.2 正则表达式的特点2.正则表达式在js中的使用2.1正则表达式的创建2.2测试正则表达式3.正则表达式中的特殊字符3.1正则表达式的组成3.2边界符3.3字符类3.3.1 [] 方括号3.3.2量词符3.3.3用户名表单验证3.3.4 括号总结3.4预定义类3.5正则替换replace 1.正则表达式概述 1.1什么是正则表达式 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也

耍酷的李世达的博客 640

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

JS高级-正则表达式

JS高级-正则表达式 文章目录JS高级-正则表达式1.正则表达式概述2.正则表达式在JavaScript中的使用2.1创建正则表达式2.2测试正则表达式 test3.正则表达式中的特殊字符3.1正则表达式的组成3.2边界符3.2字符类3.3量词符3.3预定义类4.正则表达式的替换4.1 replace 替换4.1正则表达式参数 1.正则表达式概述 正则表达式用于匹配字符串中字符组合、替换页面内容的文本词、或从字符串中提取我们需要的特定部分。正则表达式也是对象。 2.正则表达式在JavaScript中的使用

Java_young_man的博客 1078

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaScript高级正则表达式

   欢迎加入前端技术营!如果你也是前端学习者或者对前端有学习的想法,那就跟着我一起从零开始进击前端。   致力于尽可能详细且简洁的介绍前端知识、自己的捷径,也是学习路上的记录。欢迎探讨 文章目录JavaScript高级第04天笔记1.正则表达式概述1.1什么是正则表达式1.2 正则表达式的特点2.正则表达式在js中的使用2.1正则表达式的创建2.2测试正则表达式3.正则表达式中的特殊字符3.1正则表达式的组成3.2边界符3.3字符类3.3.1 [] 方括号3.3.2量词符3.3.3用户名表单验证3.3.

N奈斯先生的博客 868

JavaScript 正则表达式使用详解

正则表达式是一种用于匹配字符串中字符组合的模式。它可以帮助我们在字符串中查找、替换、验证内容等。正则表达式通常由字符元字符和量词等组成,可以非常精确地描述一个搜索模式。在 JavaScript 中,正则表达式是RegExp对象的实例,具有强大的文本匹配功能。正则表达式特性说明字符匹配匹配字符串中的单个字符元字符如\d\w\s等用于匹配特定字符集方括号[]定义字符类,可以匹配多个字符中的任意一个量词如?{n,m}控制字符或子表达式的出现次数分组和管道符( )和 `正则方法如test()

m0_62599305的博客 1433

JavaScript高级 正则表达式

正则表达式简介 定义:正则表达式用于定义一些字符串的规则。 作用:计算机可以根据正则表达式,来检查一个字符串是否符合指定的规则;或者将字符串中符合规则的内容提取出来。 创建正则表达式的对象 方式一:使用构造函数创建正则表达式的对象 语法: var 变量 = new RegExp("正则表达式"); // 注意,参数是字符串 var 变量 = new RegExp("正则表达式", "匹配模式"); // 注意,两个参数都是字符串 备注:RegExp的意思是 Regular expression。使用

ximingx 636

JS高级之正则表达式

JS高级之正则表达式 引言:正则表达式在实际开发中我们一般是直接引用,所以在学习阶段只要求看得懂,在开发的时候根据项目需求懂得如何修改即可。 1.正则表达式概述 1.1什么是正则表达式 ​ 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。 ​ 正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户 名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用

ithsee_911 248

javascript(js)正则表达式基本用法

1.什么是正则表达式 Regular Expression使用单个字符串来描述、匹配一系列某个句法规则的字符串---按照某种规则去匹配符合条件的字符串 正则表达式应用场景 1.在IDE中使用正则表达式处理规则复杂的字符串查找、替换需求 2.在JavaScript程序设计中使用正则表达式处理字符串 3.在其他语言中 **推荐一个可视化正则表达式网站:http://regexper.com

on1y_rL的博客 633

正则表达式 丨JavaScript 高级

正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等。其他语言也会使用正则表达式,本阶段我们主要是利用 JavaScript 正则表达式完成表单验证。

黑马程序员官方博客 344

js高级04之正则表达式

js高级04 1.正则表达式 1)匹配 2)替换 3)提取 2.正则表达式在js中的使用 1)通过调用RegExp对象的构造函数创建 var 变量名=new RegExp(/表达式/); 2)利用字面量来创建 var 变量名=/表达式/; 3)测试正则表达式test 用于检测字符串是否符合该规则,该对象会返回true或false,其参数是测试字符串 regexObj.test(str) a.regexObj是写的正则表达式 b.str我们要测试的文本 c.就是检测str文本是否符合我们写的正则表达式规范 3

qq_45169358的博客 385

JavaScript高级之正则表达式学习笔记

JavaScript高级之正则表达式学习笔记1 正则表达式概述1.1 什么是正则表达式1.2 正则表达式的特点2 正则表达式在 JavaScript 中的使用2.1 创建正则表达式2.2 测试正则表达式 test3 正则表达式中的特殊字符3.1 正则表达式的组成3.2 边界符3.3 字符类3.4 量词符3.5 括号总结3.6 预定义类4 正则表达式中的替换4.1 replace 替换4.2 replace 替换参数5 常用正则表达式 1 正则表达式概述 1.1 什么是正则表达式 正则表达式( Regula

Lostdeer的博客 216

JavaScript 高级应用第一弹

JavaScript 高级应用第一弹

欢迎来到Gorit的博客 2058

JavaScript高级 4

1.正则表达式概述 1.1什么是正则表达式 正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。 正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。 其他语言也会使用正则表达式,本阶段我们主要是利用JavaScript

weixin_48116269的博客 170
上一篇: JavaScript 高级3 :函数进阶
下一篇: JavaScript 高级5 :ES6
CaptainDrake
博客等级 码龄6年 5362粉丝 187原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值