正则表达式教程 概念+实战
发布时间:2020-12-14 00:38:17 所属栏目:百科 来源:网络整理
导读:转载请注明预见才能遇见的博客:http://my.csdn.net/ 原文地址:http://www.jb51.cc/article/p-wvxkeurv-bpo.html 正则表达式教程 概念+实战 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个
转载请注明预见才能遇见的博客:http://my.csdn.net/ 原文地址:http://www.52php.cn/article/p-wvxkeurv-bpo.html
正则表达式教程 概念+实战
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab','abb','abbbbbbbbbb' 都符合这个特征。
1.普通字符 字母,数字,汉字,下划线及一些没有特殊定义的标点符号,都属于普通字符,正则中的普通字符,在匹配字符串的时候,匹配与之相同的字符即可。str = 'abcde'; //2 value = str.search(/c/); //["c",index: 2,input: "abcde"] value = str.match(/c/);表达式 "c",在匹配字符串 "abcde" 时,匹配结果是:成功;匹配到的内容是:"c";匹配到的位置是:开始于2,结束于3。(注:下标从0开始还是从1开始,因当前编程语言的不同而可能不同) 2.简单的转义字符 (1)n 匹配一个换行符 (2)f 匹配一个换页符 (3)r 匹配一个回车符 (4)t 匹配一个制表符 (5)v 匹配一个垂直制表符 案例(n):匹配一个换行符,返回换行符被找到的位置,其他简单转义字符同理 基本语法:new RegExp(“n”) 或直接量 /n/ str = 'My name n is RegExp. n My name is RegExp.'; //["?",index: 8,input: "My name ? is RegExp. ? My name is RegExp."] value = /n/g.exec(str); //["?","?"] value = str.match(/n/g); //8 value = str.search(/n/g); //true value = /n/g.test(str); 3.某些的转义字符(初期可以了解一下,熟悉正则表达式之后再重点的学习) (1) 查找NUL字符 (2)xxx 查找一个以八进制数xxx规定的字符 (3)xdd 查找以16进制数dd规定的字符 (4)uxxxx 查找以16进制数的xxxx规定的Unicode字符 匹配中文字符正则:u4E00-u9FA5uf900-ufa2d str = "659157faha获取字符串中的中文fhal47194fafl"; //["获","取","字","符","串","中","的","文"] value = str.match(/[u4E00-u9FA5uf900-ufa2d]/g); 4.能够匹配'多种字符'的表达式 (1) . 查找任意的单个字符,除换行符(n)外 (2) w 任意一个字母或数字或下划线,A_Za_Z0_9,_中任意一个 W 查找非单词的字符,等价于[^A_Za_z0_9_] (3) d 匹配一个数字字符,等价于[0-9] D 匹配一个非数字字符,等价于[^0-9] (4) s 匹配任何空白字符,包括空格,制表符,换行符等等。等价于[fnrtv] S 匹配任何非空白字符,等价于[^fnrtv] (5) b 匹配一个单词边界,也就是指单词和空格间的位置,比如’erb’可以匹配”never”中的”er”,但是不能匹配”verb”中的”er” B 匹配非单词边界,’erB’能匹配’verb’中的’er’,但不能匹配’never’中的’er’
//(1). . 任意的单个字符除(n)外 value = /^.+$/.test('h7_#');//true value = /^.+$/.test('h7_#n');//false //(2). w 字母、数字、下划线 value = /^w+$/.test('h7_');//true value = /^w+$/.test('h7_#');//false //(3). d 数字 value = /d{3}/.test('789');//true value = /d{3}/.test('7r9');//false //(4). s 匹配任何空白字符,包括空格,制表符,换行符等等。等价于[fnrtv] value = /^s+$/.test('fnrtv');//true value = /^s+$/.test('swfnrtv');//false value = /s+/.test('hello longen hello el');//true //(5). b 匹配一个单词边界 str = "hello longen hello el"; value = /bhellob/.test(str);//true value = /bhellb/.test(str);//false
元字符(Metacharacter)是拥有特殊含义的字符:
|