js正则表达式

JS正则表达式验证表单 我们通常写的表单中,往往要判断用户填的是否符合要求,那么可以通过js的正则式来验证。js的正则式语法可参考菜鸟教程:JS正则表达式 下面是我的表单页面: 在点击下一步的时候,可以通过JS来控制下,如果不符合要求,则不进行跳转。下面代码中的变量名都是输入框所填项的英文,应该没歧义吧,我就不展示HTML部分了,直接给出js判断。 $(document).ready(function() { ... 阅读详情

原文:http://www.cnblogs.com/xiaofu/articles/1613463.html

1.正则表达式

正则的exec方法和字符串的match方法,当没有全局标志g时,它们两的行为是一样的,有index,input,lastindex等属性!除了返回与表达式相匹配的文本外,所有匹配的子串也会返回!!
             1.1使用RegExp对象

                     例:

                     var match=”cat”;
                     var reCat=/cat/;
                     或 reCat=new RegExp(“cat”);
                     alert(reCat.test(match));//
                     RegExp的test方法测试字符串是否匹配这个模式。
                     var match=”a bat,a Cat,a fAt bat,a faT cat”;

                     var reAt=/at/;
                     var arrMatches=reAt.exec(match);

                     RegExp对象的exce方法返回一个数组,数组中的第一条目是第一个匹配;其他的是反向引用。
                     String对象数组有的match()方法,它会返回一个包含所有字符串中的所有匹配的数组。

                     var s=”a bat,a Cat,a fAt bat,a faT cat”;
                     var reAt=/at/gi;
                     或 reCat=new RegExp(“cat”,”gi”);
                     var arr=s.match(reAt);

                     String对象的Search()字符串方法返回在字符串中出现的一个匹配的位置。

                  Alert(s.search(reAt));

             1.2扩展的字符串方法

                     String对象的replace()和split()方法都可以传递正则表达式。
                     这里的replace()方法的第二个参数可以传递一个函数。这处函数可以接受一个参数,即匹配了的文本,并返回应当进行替换的文本

                     var tt=”The sky os red”;
                     var re=/red/;

                     var sText=tt.replace(re,function(sMatch){ return “blue”;});


                     sMatch这个参数就是用模式re匹配后的文本!!

       2.简单模式
              2.1元字符
                     正则表达式的元字符是正则表达式语法的一部分。

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

                     任何时候要在正则表达式中使用元字符都必须对它们进行转义用’\’。      

                     Var retest=/\?/;

                     或var retest=new RegExp(“\\?”);//必须用两个反斜杠,如果用的一个反斜杠,那么JS解释器会按照\n的方式翻译\?.

              2.2使用特殊字符

                     转义字符

              2.3字符类

                     就是把一些字符放入方括号中,然后正则表达式去匹配里面的各个字符。也即只能匹配方括号中的任意一个字符,不是同时匹配全部啊!!!

                    2.3.1.简单类
                            例:[adf]等
                     2.3.2.负向类
                            例:[^adf]等,告诉正则表达式不能匹配脱字符^后面跟着的字符。
                     2.3.3.范围类
                            例:[a-z] [A-Z] [0-9] [^b-z]等
                     2.3.4.组合类
                            例 [a-m1-4\n]注意各个内部类之间没有空格。
                     2.3.5.预定义类

                            代码             等同于                         匹配

                            .             [^\n\r]                          除了换行和回车之外的任意字符      

                            \d           [0-9]                                   数字

                            \D           [^0-9]                          非数字

                            \s            [\t\n\f\r\x0b]                 空白符

                            \S           [^\t\n\f\r\x0b]               非空白符

                            \w           [a-xA-Z_0-9]                单词字符 (有可能匹配汉字)看语言支持Unicode字段否

                            \W          [^a-xA-Z_0-9]                     非单词字符

              2.4量词

                     2.4.1.简单量词

                     代码                                          描述

                     ?                                                出现零次或一次

                     *                                               出现零次或多次(任意次)

                     +                                               出现一次或多次

                     {n}                                            刚好出现n次

                     {n,m}                                        至少出现n次,至多m次

                     {n,}                                           至少出现n次

              2.4.2.贪婪的、惰性的和支配性量词

                     贪婪性量词先看整个字符串是否匹配,如果没有匹配,它先去掉该字符串最后一个字符,并再次尝试。这个过程一直重复下去。

                     惰性量词先看字符中的第一个字符是否匹配,如果不匹配,就读入下一个量词,组成两个字符的字符串,再比匹配。这个过程一直重复下去,直到匹配或没有匹配。

                     支匹配性量词只尝试匹配整个字符串,如果整个字符串不能产生匹配,不做进一步尝试。

贪婪                            惰性                                   支配

?                                  ??                                       ?+

*                                 *?                                       *+

+                                 +?                                       ++

{n}                              {n}?                                          {n}+

{n,m}                          {n,m}?                                {n,m}+

{n,}                             {n,}?                                  {n,}+

例:

              Var sToMatch=”abbbaabbbaaabbb1234”;
              Var re1=/.*bbb/g;
              Var re2=/.*?bbb/g;

              Var re3=/.*+bbb/g;

              如果想获得的匹配是”abbb”,”aabbb”,”aaabbb”,这三个表达式中只有re2能匹配成功。

              2.4.3标志

                     字符                                   含义

                     i                                  执行不区分大小定的匹配

                     g                                 执行一个全局匹配,即找到所有匹配,而不是在找到第                                                        一个之后就停止

                     m                                多行模式,^匹配一行的开头和字符串的开头,$匹配一行的结尾或字符串的结尾

       2.5复杂模式

              2.5.1分组

                     分组是通过用括号包围一系列字符、字符类及量词来使用的。每次必须全部匹配括号中的所有字符。

                     例:

                            var reg1=/(dog)?/;//匹配0个或一个dog字符串序列

                            var reg2=/(dog)*/;//匹配0 个或多个dog字符串序列

                            var reg3=/(dog){2}/;//字符序列”dog”将在一行上连续出现两次!

              2.5.2反向引用

                     在表达式计算完后对分组的利用,即每个分组都被存储在一个特殊的地方以备使用。这些存储在分组中的特殊值,我们称之为反向引用。

                     反向引用是按照从左到右遇到的左括号字符的顺序进行创建和编号的。例如表达式(A?(b?(c?)))将产生编号1-3的三个反向引用。

                     (1)(A?(B?(c?)))

                     (2)(B?(c?))

                     (3)(c?)

                     首先,使用正则表达式对象的test() 、exec()方法或string对象的match() 、search()方法后,反向引用的值可以从RegExp构造函数中得到

              例:

                     var test=”#12345”;
                     var re=/#(\d+)/;
                     re.test(test);
                     alert(RegExp.$1);

                     使用这test方法后,所有的反向引用都被保存在RegExp构造函数,从RegExp.$1开始,如果还有第二个引用,就是RegExp.$2.

                     然后,还可以直接在定义分组的表达式中包含反向引用,这可以通过使用特殊转义序列\1 \2等实现。

                     var tt=”dogdog”;                 
                     var re=/(dog)\1/;
                     alert(re.test(tt));//outputs ‘true”

                     正则表达式re首先创建单词dog的组,然后又被特殊转义序列\1引用,使得这个表达式等同于/dogdog/。

                     最后,反向引用可以用在String对象的replace()方法中,这通过使用特殊字符序列$1、$2等实现。

                     var str=”1234 5678”;
                     var re=/(\d{4})(\d{4})/;
                     var new=str.replace(re,”$2 $1”);
                     alert(new);//outputs “5678 1234”;

              2.5.3.候选

                     例

                            var  strRed=”red”;
                            var  strBlue=”blue”;
                            var   re1=/(red | blue)/;

                            把一个管道符”|” 放在两个单独的模式之间,如上所示。当对这个模式进行测试时,只要有一个被匹配就返回true,因为它相当于一个or模式,即任何一个匹配就可以。

              2.5.4非捕获性分组

                     前面的产生反向引用的分组,我们称之为捕获性分组。如果分组不想产生反向引用,那么只要在括号的后面加一个问号和一个紧跟的冒号.

                     var t=”#3142134”;
                     var re=/#(?:\d+)/;
                     re.test(t);
                     alert(RegExp.$1);//outputs “”;

              2.5.5前瞻

                     它告诉正则表达式运算器向前看一些字符而不移动其位置。

                     正向前瞻检查的是接下来出现的是不是某个特定字符集。而负向前瞻则是检查接下来的不应该出现的特定字符集。

                     创建正向前瞻要将模式放在(?=和)之间,注意,这不是分组,虽然它也用到了括号。事实上,分组是不会考虑前瞻的存在的。

                     var str1=”bedroom”;
                     var str2=”bedding”;
                     var re=/(bed(?=room))/;
                     alert(re.test(str1));//outputs “true”
                     alert(RegExp.$1));//outputs “bed”;
                     alert(re.test(str2))//ouputs “false”;

                     创建负向前瞻要将模式放在(?和)之间,

                     var str1=”bedroom”;
                     var str2=”bedding”;
                     var re=/(bed(?!room))/;
                     alert(re.test(str1));//outputs “false”
                     alert(RegExp.$1));//outputs “bed”;
                     alert(re.test(str2))//ouputs “true”;

              2.5.6边界

                     指定了模式的位置。$,^可以改变匹配的方向,或者说是改变贪婪和惰性量词的默认行为。看下面例子

                     边界                     描述

                     ^                          行开头

                     $                          行结尾

                     \b                         单词的边界,就是位于\w和\W之间的位置,或位于字符\w                                           和字符串的开头或结尾之间的位置。

                     \B                         非单词边界

                     例:

                            var str=”Important word is ths last one”;
                            var re=/(w+)\.$/;
                            re.test(str);

                     这个例子查找的一行结束之前出的跟着一个句号的一个或多个单词字符。这个例子它改变了那个贪婪性量词的方向,它先匹配整个串,然后去掉头的一个字符,继续匹配下去。

                     var str=”Important word is ths last one”;
                     var re=/\(.+?)\b/;
                     re.test(str);
                     alert(RegExp.$1);//outputs “important”

                     这里用惰性量词来制定在单词边界之前可以出现任何字符,且可出现一个或多次。

                     注意行的开始和行的结束,通常由^和$表示的位置,对应也也认为是单词的边界。

              2.5.7多行模式

                     要指定多行模式,只要在正则表达式后面添加一个m选项。这会让$边界匹配换行符(\n)以及字符串真正的结尾。

                     多行模式同样会改变^边界的行为,这时它会匹配换行符之后的位置。

                     var str=”first second\nthird fourth\nfifth sixth”;
                   var re=/(\w+)$/gm;
                 var new=str.match(re);//outputs “second”,”fourth”,”sixth”

       2.6理解RegExp对象

              2.6.1实例属性

                     有用的lastIndex属性,它可告诉你正则表达式在某个字符串中停止之前,查找了多远(即下次匹配将会从哪个字符位置开始)。这个属性只对exec和test方法才会填入(废话,RegExp对象只有这两个方法)。必须要有全局标志(g)才行。

                     var str=”bbq is short”;
                     var re=/b/g;
                     re.exec(str);
                     alert(re.lastIndex);//outputs “1”;下次从第二个b开始,位置1
                     re.exec(str);
                     alert(re.lastIndex);//outputs “2”

              2.6.2RegExp对象的两个方法

                     test()方法

                            检测一个字符串是否含有一个模式。

                      exec()方法

                            (1) 在调用非全局(没加g标志)的RegExp对象的exec()方法来检索字符串string,从中得到与表达式regexp相匹配的文本。如果exec()找到了匹配的文本,它就会返回一个结果数组。否则,返回一个null。这个返回的第0个元素就是与表达式相匹配的文本。第1个元素是与regexp的第一个子表达式(分组表达式)相匹配的文本。第2个元素以此类推。还有一个length属性,除了length属性和数组元素外,exec()方法还返回两个属性,index属性声明的是匹配文本的第一个字符的位置,input属性指定的就是string。在调用非全局(没加g标志)的RegExp对象的exec()方法时,返回的数组与调用方法String.match()方法相同。

                            在调用全局的RegExp对象的exec()方法时,exec()的行为不同。它每次匹配是从regexp的属性lastIndex指定的字符处开始检索字符串string(相当于它是有记忆的,执行一次后,下次该从哪执行是记录下来的,而没有加全局标志的每次都string头开始匹配查找)。当它找到了与表达式相匹配的文本时,在匹配后,它将把regexp的lastIndex属性设置为匹配完文本后的下一个字符的位置。这样可以反复调用exec()方法来匹配所有匹配文本。当再也找不到匹配文本时,返回null,自动把属性设置为0。当然它的第1个元素及以后的元素仍然存放的是子表达示的文本。这在match()方法中是没有的。

                            简单的来说,exec()方法的全局检索和非全局检索区别在于:全局检索会多出一个lastIndex索引来指示下一次开始匹配字符的位置。而且可以多次调用exec()方法来匹配所有匹配文本。

                            (2) 如果 regexp 没有标志 g,那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。 index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。

                            如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串(也就是说返回的数组中不是存放的正则表达式的子达式的匹配文本而是与个表达式匹配的文本,可能有多个),而且也没有 index 属性或 input 属性。

注意,无论regexp是否全局模式,exec()会将完事的细节添加到返回的数组中。这是exec()方法与match()方法不同的地方。

                            例如:

                            var pattern=/\bJava\w*\b/g;
                            var text="JavaScript is more fun than Java or JavaBeans";
                            while((result=pattern.exec(text))!=null)
                                   {
                                   alert("Matched '"+result[0]+"' at position "+result.index+" next seatch begins at position "+ pattern.lastIndex);
                                   }//必须循环才能找出所有匹配文本。
                            //
                            “1 plus 2 equals 3”.match(/\d+/g) // returns [“1”,”2”,”3”]返回的子串
基于正则表达式的JavaScript/C++语法高亮(js版) JavaScript的语法高亮一直是个难点,因为需要语义分析以确定/是除法操作的开始还是正则表达式的开始。目前关于高亮js的语法高亮都不是很理想,尤其是syntaxhighlighter(你待会看到的代码高亮效果就是它弄的, csdn说, 就用sh了)的效果算是最差的了,根本就不高亮正则、数字等,太不敬业了。假设你写的代码是足够规范的,而且不考虑效率的话,那么你使用我这个高亮js一般不会有问题。 阅读详情

相关推荐

手把手教你用Isaac Sim 8打造逼真光影效果:参数设置与场景应用

本文详细介绍了如何使用Isaac Sim 8打造逼真光影效果,涵盖基础参数设置、高级材质交互、专业级灯光造型技法以及复杂场景的灯光布局策略。通过实战案例和参数调优技巧,帮助用户提升虚拟场景的视觉表现,适用于数字孪生、虚拟仿真和影视特效等领域。

weixin_30836759的博客 80

javascript正则表达式,jquery正则

一、javascript正则表达式的基本知识 1 javascript 正则对象创建 和用法声明javascript 正则表达式 var reCat = new RegExp(“cat”); 你也可以 var reCat = /cat/; //Perl 风格 (推荐) 2 学习最常用的 test exec match search replace split 6个方法

632

避坑指南:STM32CubeMX安装后,你的第一个工程为什么中文全是乱码?

本文详细解析了STM32CubeMX安装后中文乱码问题的根源及解决方案。从诊断乱码现象到分析编码冲突背景,提供了新项目UTF-8化、旧项目GBK兼容及版本降级等多种实用方案,帮助开发者彻底解决这一常见问题。

weixin_30699955的博客 474

Jquery中的正则表达式

1. 在使用表单提交数据的时候由于输入的数据可能不合法,所以在表单提交或者文本框发生变化的时候来校验数据是否符合规定的要求,假如不符合要求,那么需要提示错误信息给用户,让用户重新输入,并且return false让表单不能够提交到控制器中 2. 这里我们使用Jquery来调用表单文本框内容改变的监听函数:change(),当文本框内容改变的时候进行数据校验,所以这里涉及到了正则表达式的书写,下面...

二哈 2万+

智能车学习日记【二】————十字和斜入十字

智能车学习日记【二】————十字和斜入十字 文章目录 智能车学习日记【二】————十字和斜入十字 前言 一、普通十字补线 二、斜入十字 1.判断是否为斜入十字和斜入十字类型 2.找斜入十字拐点 总结 前言 经过了一个多月的学习,小白的我终于也是能较稳定调出了2.8m以上的四轮车,过程中也遇到了很多困难,其中就有十字补线和斜入十字补线。尤其是斜入十字也是困扰了我快一周,现在和大家分享一下我处理斜入十字的方法(我的方法其实还有很多漏洞需要改进,仅供大家参考理解一下,欢迎各位在评论区指点出可

bsefef的博客 2740

5种隐藏代码到图片的实用技巧:从Notepad++到Linux命令全解析

本文详细解析了5种将代码或文本隐藏到图片中的实用数据隐写技巧。从Notepad++尾部追加、Windows命令行合并,到编辑图像元数据、使用十六进制编辑器,再到Linux的cat/dd命令,全面覆盖了从图形界面到命令行的工程化实践方法,帮助开发者和安全研究人员掌握隐蔽信息传输与存储的核心技术。

hh234的博客 353

【JS】JavaScript正则表达式基础

目录一、正则表达式二、字符串使用正则表达式三、常用例子 一、正则表达式 关于正则表达式,我在另一篇博客记录过:正则表达式 二、字符串使用正则表达式 三、常用例子

小绵杨 2208

哈希拓展攻击CTF题做法

kali下载相关工具hash-ext-attack:hash拓展题目特征:2023楚慧杯upload_shell实验吧之让我进去:前言:具体怎么加密解密补位的原理我不懂,深入理解的部分我在文末挂了链接,以下也只是我做题的结论和通解,可能不准确(但是做题还挺准确),有错误欢迎指出:是在密码加密过程中引入的一个随机值,它与密码结合使用,目的是增加密码的复杂性和安全性。在密码加密中,常见的做法是将用户提供的密码进行哈希处理,然后存储哈希值而不是明文密码

2301_76690905的博客 2419

【JavaScript】一文了解JS的正则表达式

详解JavaScript中正则表达式

ztK63LrD的博客 2220

二极管限幅电路和钳位电路

二极管限幅电路和钳位电路学习

HW-BASE的博客 928

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

【python股票价格预测】基于CNN-LSTM的股票价格预测(附python代码)

k8291121的博客 2008

JS正则表达式介绍(JavaScript正则表达式)

JavaScript正则表达式是一种强大的文本处理工具,掌握其基本语法和高级技巧可以大幅提高文本处理效率。正则表达式由元字符、量词、分组等组成,通过合理组合这些元素,能够实现复杂的模式匹配需求。正确理解和使用标志(flags)可以让正则表达式匹配更精确、更高效,适应不同的文本处理需求。在实际应用中,需要注意正则表达式的可读性和性能问题,避免过于复杂的模式导致难以维护或性能下降。

Dontla的博客 1758

2011-2024年间各省数字普惠金融指数数据(覆盖广度、使用深度和数字化程度)

2、指标:数字金融普惠指数、数字金融覆盖广度指数、数字金融使用深度指数、普惠金融数字化程度指数、数字金融使用深度指数下属的支付、保险、货币基金、信用服务、投资、信贷等分类指数。中国各省的数字普惠金融指数数据,从数字金融覆盖广度、数字金融使用深度和普惠金融数字化程度3个维度来构建数字普惠金融指标体系。数字普惠金融指数一共3个维度、33项具体指标。全套指数包含数字金融覆盖广度指数、数字金融使用深度指数和普惠金融数字化程度指数,以及数字金融使用深度指数下属的支付、保险、货币基金、信用服务、投资、信贷等分类指数。

【优快云】 1万+

常用js正则表达式 Javascript正则表达式实战手册

最近做了几个项目,发现正则表达式用得越来越多了。我个人的习惯是,能通过查手册获取的东西绝不死记硬背,虽然大多数技术网站都搜罗了一堆Javascript正则表达式的用法,但我还是想整理一份更有实战意义的手册。说白了就是,如果以后需要用到正则表达式,直接过来复制粘贴就行啦!我会尽量把排版做的漂亮一点,便于大家提高开发效率。前面是Javascript正则表达式的简明用法,实战内容请跳到最后一节。   ...

xh601的博客 5308

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【JS】JavaScript正则表达式详细使用

目录1、描述字符范围 : [ ]2、选择匹配:| 在上一篇博客中,记录了js中正则表达式的简单使用:【JS】JavaScript正则表达式基础。这篇博客学习一下JavaScript中正则表达式的详细使用。 1、描述字符范围 : [ ] 在正则表达式语法中,方括号表示字符范围。在方括号中可以包含多个字符,表示匹配其中任意一个字符。如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符~表示。如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。例如: [abc]:查找方括号内

小绵杨 1705

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

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

on1y_rL的博客 633

深度学习工具包 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")

JS(JavaScript) 数据校验 正则表达式

正则表达式是一门独立的语言,有自己的语法,用来检测指定字符串是否符合特定的规则正则表达式就是用来定义规则的,全称为Regular ExpressionJavaScript中提供了RegExp对象,表示正则表达式创建正则表达式对象的方式有两种使用字面量定义举例//a是定义的匹配规则,i是忽略大小写//通过reg的test函数进行验证使用构造函数定义举例//定义正则表达式,注意这里的双斜杠中的内容不能以变量传入,只能直接写入//a是定义的匹配规则,i是忽略大小写。

感谢阅读 3324

js正则限制字符串长度_JavaScript 正则表达式

js中正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单,过滤(替换)页面内容中的一些敏感词汇。1.1什么是正则表达式正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。1.2 正则表达式的特点灵活性、逻辑性和功能性非常的强。可以迅速地用极简单的方式达到字符串的复杂控制。对于刚接触的人来说,比较晦...

weixin_39651488的博客 1万+

{JS}JavaScript使用正则表达式

 正则表达式概述在前面已经涉及了一些正则表达式的用法,现在将系统地学习正则表达式的语法和用途。正则表达式主要用于进行字符串的模式匹配,例如判断一个字符串是否符合指定格式等。例如在windows下搜索文件,可以用“*”或者“?”这样的通配符。在正则表达式的语法中,有更多这样的符号用于表示一个字符串的模式,表7.1列出了所有的特殊符号,它们也被称为元字符。表7.1 正则表达式中的元字符

283

【JS】JavaScript正则表达式

正则表达式 是一个描述字符模式的对象,JavaScript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能。JavaScript中的正则表达式用RegExp对象表示,可以使用RegExp()构造函数来创建RegExp对象,不过RegExp对象更多的是通过一种特殊的直接量语法来创建,正则表达式直接量定义为包含在一对斜线之间

Making Life Better. Making Others Better. 1367

JavaScript/JS 中,如何连接两个正则表达式 RegExp

JavaScript 的正则表达式可以用两种表达方式: 这两种表达式等价。JS 正则有两个属性, 和 会输出它的标志, 则输出它的正则匹配串。利用这两个属性,就可以去拼接两个正则: 💥 注意 需要去重,不然 构造函数会抛出 错误。[1] How to Concatenate a Regular Expression......

YopenLang的博客 3808

JavaScript正则表达式

JS代码 <script> // QQ号 var num = "10566"; var qq = /^[1-9]{1}([0-9]{4,9})$/; //输出true console.log(qq.test(num)); // 手机号 var num1 = "17694531646"; var phoneNumber =/^[1-9]{1}[0-9]{10}$/; //输出true console.log(phon

xiaoguilong1的博客 301

Javascript常用正则表达式以及JS常见正则表达式笔试题

JS正则表达式,在表单验证等方面都有应用,下面结合学习经过,整理一些初学 者所需要掌握的一些基本JS正则规则: 1.正则表达式基础语法练习 (1)校验邮政编码(由六位组成) 这里要注意,不能写成/\d{6}/,如果写成这样,那么校验内容为7位时,也 能通过校验! 我们同样也可以写成a=/\b\d{6}\b/;或者a=/^\d{6}\b/ (2)

liwusen的博客 8212

js正则表达式全局匹配正斜杠_JavaScript正则表达式常用技巧

正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。正则表达式的掌握程度能粗略地看出程序员的技术底子,所以技术面试、编程竞赛等 都特别喜欢考察正则表达式。本篇就带你一起夯实一下 Ja...

weixin_39990250的博客 2145
上一篇: js继承
下一篇: js队列和堆栈
阿榄
博客等级 码龄18年 31粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值