自由学习正则表达式

               嘿嘿,今天家又停电啦,就来写总结晚啦,只得等到如今啦,其实咱们今天学习的是什么我已经不记得啦,因为这周给咱们讲.Net的老师飞去给其余班级上课,因而咱们就听课啦,而公司为了搪塞咱们,给咱们安排啦一个Oracle数据库老师,本觉得能够学到这个是咱们的荣幸啦,但是意想不到的是坐在第一排的咱们都难以听到老师是什么,这个是给老师提建议啦,但是改变不了啊,这样的一天,课堂气氛甚是安静啊,咱们100度的学习热度,最后一点点的降低到了零下,其实今天仅仅带咱们安装Oracle数据库,可想而知,咱们下载完文件,也没有安装成功,这样的一天就是这样结束的,咱们学生痛苦啊,咱们在想一想公司反映仍是本身学习吧,可是想啦一下,老师也是无辜的吧,不想打击她啦,因而咱们选择默默地上课吧,默默祈祷这周安静的快点成为记忆拉。javascript

          不论由于什么缘由,学习的每一天是不能落下的,因而本身看啦一下正则表达式,其实则表达式是用来进行文本处理的技术,是语言无关的,在几乎全部语言中都有实现。javascript中还会用到,一个正则表达式就是由普通字符以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式做为一个模板,将某个字符模式与所搜索的字符串进行匹配。就像通配符“*.jpg”、“%ab%”,它是对字符串进行匹配的特殊字符串,正则表达式能作什么那?其实正则表达式就是对字符串的处理,能够用来对字符串的匹配、字符串的提取、字符串的替换等;咱们在项目中像作到采集器、敏感词过滤、URLRewite、Validator也可使用正则表达式。下面就简单的总结一下吧。java

          一.元字符正则表达式

                . :匹配除\n以外的任何单个字符。例如正则表达式“b.g”能匹配以下字符串:“big”、“bug”、“b g”,可是不匹配“buug”,“b..g”能够匹配“buug”。 
          [ ] :匹配括号中的任何一个字符。例如正则表达式“b[aui]g”匹配bug、big和bag,可是不匹配beg、baug。能够在括号中使用连字符“-”来指定字符的区间来简化表示,例如正则表达式[0-9]能够匹配任何数字字符,这样正则表达式“a[0-9]c”等价于“a[0123456789]c”就能够匹配“a0c”、“a1c”、“a2c”等字符串;还能够制定多个区间,例如“[A-Za-z]”能够匹配任何大小写字母,“[A-Za-z0-9]”能够匹配任何的大小写字母或者数字。。
          | :将两个匹配条件进行逻辑“或”运算。‘z|food’能匹配“z”或“food”。‘(z|f)ood’则匹配“zood”或“food”。 //注意^$问题。
          ( ) :将 () 之间括起来的表达式定义为“组”(group),而且将匹配这个表达式的字符保存到一个临时区域,这个元字符在字符串提取的时候很是有用。把一些字符表示为一个总体。改变优先级、定义提取组两个做用。
               
               二.元字符(限定符)
         *:匹配0至多个在它以前的子表达式,和通配符*不要紧。例如正则表达式“zo*”(等同于z(o)*)能匹配“z”、“zo”以及“zoo”;所以“.*”意味着可以匹配任意字符串。"z(b|c)*"→zb、zbc、zcb、zccc、zbbbccc。"z(ab)*"能匹配z、zab、zabab(用括号改变优先级)。
         + :匹配前面的子表达式一次或屡次,和*对比(0到屡次)。例如正则表达式9+匹配九、9九、999等。“zo+”能匹配“zo”以及“zoo”,不能匹配"z"。
         ? :匹配前面的子表达式零次或一次。例如,“do(es)?”能够匹配“do”或“does”。通常用来匹配“可选部分”。(终止贪婪模式)
        {n} :匹配肯定的 n 次。“zo{2}”→zoo。例如,“e{2}”不能匹配“bed”中的“e”,可是能匹配“seed”中的两个“e”。 //seeeed,不能够。
        {n,} :至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配 “seeeeeeeed”中的全部“e”。
        {n,m} :最少匹配 n 次且最多匹配 m 次。“e{1,3}”将匹配“seeeeeeeed”中的前三个“e”。 {2,5}//bed,seed,seeed;beeeeed错误。
             ^(shift+6) :匹配一行的开始。例如正则表达式“^regex”可以匹配字符串“regex我会用”的开始,可是不能匹配“我会用regex”。^另一种意思:非!([^0-9])
        $ :匹配行结束符。例如正则表达式“浮云$” 可以匹配字符串“一切都是浮云”的末尾,可是不能匹配字符串“浮云呀”    
  
        下面就简单的总结一下目前咱们初步学习经常使用的正则表达式:
匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?       
            //bool r = Regex.IsMatch("bug", "^b.g$");
            //Console.WriteLine(r);

            //练习1:判断是不是合法的邮政编码(6位数字)
            //bool r = Regex.IsMatch("100010", @"^\d{6}$");
            //Console.WriteLine(r);

            //判断一个字符串是否是身份证号码,便是否是15或18位数字。
            //string s = "123456789012345678";
            //bool r = Regex.IsMatch(s, @"^\d{15}$|^\d{17}[0-9A-Za-z]$");
            //Console.WriteLine(r);

            //判断字符串是否为正确的国内电话号码,不考虑分机。
            //bool r = Regex.IsMatch("010-12345679544",@"^(\d{3,4}\-?\d{7,8}|\d{5})$");
            //Console.WriteLine(r);

            //判断一个字符串是不是合法的Email地址。一个Email地址的特征就是以一个字符序列开始,后边跟着“@”符号,后边又是一个字符序列,后边跟着符号“.”,最后是字符序列

            //bool r = Regex.IsMatch("123@163.com", @"^\w+@\w+\.\w+(\.\w+)?$");
            //Console.WriteLine(r);
            Console.Read();

 

       好啦,就写到这里吧,感受还有好可能是不太清楚的啦,看起来就是一堆符号和英文字母,但是实现的功能非同小可啦,嘿嘿,这个仍是要熟练的练习啦,刚开始接触感受真的很差玩,一点都不熟悉,仍是要作好多的练习的啦,嘿嘿,我会找些习题在作一下练习的啦,必定要熟练的使用的啦。数据库

相关文章
相关标签/搜索