JavaScript正则表达式

**1.  什么是正则表达式 **
.Regular Expression 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
2. 正则表达式工具:http://regexper.com
3. javaScript 通过内置对象RegExp支持正则表达式
         有两种方法实例化RegExp对象
                   .字面量
1)      Var reg = /\bis\b/g;
\b -> 表示单词边界
g -> 表示全文匹配
                  .构造函数
1)      Var reg = new RegExp (‘\bis\b’ , ’g’);
\ -> 转义‘\’
4. 修饰符
1)      g :global 全文搜索,不添加,搜索到第一个匹配停止(默认为false)
2)      I  : ignore case 忽略大小写,默认大小写敏感(默认为false)
3)      m : multiple lines 多行搜索(默认为false)
5.元字符
         .正则表达式由两种基本字符类型组成
1)      原义文本字符
2)      元字符
. 元字符是在正则表达式中有特殊含义的非字母字符
1)      \t      水平制表符
2)      \w    垂直制表符
3)      \n     换行符
4)      \r      回车符
5)      \0       空字符
6)      \f      换页符
. * + ? $ ^ . | \ ( ) { } [ ]
6. 字符类
         .可以使用 [ ] 来构建一个简单的类
         .所谓类是指符合某些特性的对象,一个泛指,而不是特指某个字符
         .表达式 [abc] 把字符a 或 b 或 c 归为一类,表达是可以匹配这类的字符
                   例: ‘a1b2c3d4’.replace(/[abc]/g , ‘X’)  --> ‘X1X2X3d4’
. 字符类取反 ‘^’ 表达式 [^abc] 表示 不是字符a 或 b 或 c 的内容
7. 范围类
         . [a-z] 表示从a 到z 的任意字符,为闭区间包含a 和z。
                   例: 1) ‘2019-01-01’.replace(/[0-9]/g , ‘A’)    --> ‘AAAA-AA-AA’
                           2) ‘2019-01-01’.replace(/[0-9-]/g , ‘A’)  --> ‘AAAAAAAAAA’
8.预定义类
         1) .         除了回车符和换行符之外的所有字符
         2) \d      数字字符
         3)  \D      非数字字符
         4)  \s       空白字符
         5)  \S       非空白字符
         6)   \w    单词字符(字母、数字下滑线)
         7)   \W    非单词字符
9. 边界
         .正则表达式提供了几种常用的边界匹配字符
1)      ^        以xx开始
2)      KaTeX parse error: Undefined control sequence: \b at position 28: …束<br />3)      \̲b̲       单词边界<br …/g , ‘Q’)  -->‘@123@abQ’
10. 量词(作用于紧挨着的前一个字符)
         1)  ?                出现零次或一次(最多出现一次)
         2)  +                 出现一次或多次(至少出现一次)
         3)  *                 出现零次或多次(任意次)
         4)  {n}               出现n次
         5) {n,m} 出现n到m次
         6)  {n,}             至少出现n次
11.模式
         .贪婪模式(默认)最大限度匹配
         例:‘12345678’.replace(/\d{3,6}/g . ‘X’)         --> ‘X78’
         .非贪婪模式(在量词后加上?即可)
         例:‘12345678’.replace(/\d{3,6}?/g . ‘X’)       -->‘XX78’
12.分组
         .使用 ( ) 可以达到分组的功能,使用量词作用于分组
         例:‘a1b2c3d4’.replace(/([a-z]\d){3}/g , ‘X’)  --> Xd4
         .反向引用   ( 使 用   (使用  (使 对分组进行捕获)
                   例:‘2019 -01-01’.replace(/(\d{4})-(\d{2})-(\d{2})/g , ‘$2/$1/$3’)  --> 01/01/2019
         .忽略分组
                   不希望捕获某些分组,只需要在分组内加上 ? :  就可以
                   例 : (?: Byron).(ok)  --> 分组1 为 (ok)
13.前瞻
         .      正则表达式从文本的头部向尾部开始解析,文本的尾部方向,称为‘前’
         .      前瞻就是在正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反。
         .      javaScript 不支持后顾
         .      符合和不符合特定断言称为  肯定/正向匹配和 否定/负向 匹配
1)      正向前瞻  exp(? = assert)
例:‘a234vv’.replace(/\W(?=\d)/g , ‘X’) --> ‘X2X4vv’
2)      负向前瞻  exp(?!assert)
例:‘a234vv’.replace(/\W(?!\d)/g , ‘X’) --> ‘aX3XXX’
14. RegExp.prototype.test(str)
         .用于测试字符串参数中是否存在匹配正则表达式模式的字符串
         .如果存在则返回true,否则返回false
例:
                 (/\w/g).test(‘a’)  --> true
15. Stringl.protatype.search(reg)
         . serach()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
         .方法返回第一个匹配的结果index ,查找不到返回-1。
         . search()方法不执行全局匹配,它忽略标志g ,并且总是从字符串的开始进行检索。
         例子:
1)      ‘a1b2c3d1’.search(‘1’)  --> 1
2)      ‘a1b2c3d1’.search(‘10’)  --> -1
3)      ‘a1b2c3d1’.search(1)     --> 1
4)      ‘a1b2c3d1’.search(/1/)   --> 1
5)      ‘a1b2c3d1’.search(/1/g)  --> 1
16. Stringl.protatype.match(reg)
         . match() 方法将检索字符串,以找到一个或多个与regexp匹配的文本
         . regexp 是否具有标志g 对结果影响很大
         . 如果regexp 没有标志g ,那么match() 方法就只能在字符串中执行一次匹配
         . 如果没有找到任何匹配的文本,将返回 null
         . 否则它将返回一个数组,其中存放了与它找到的匹配文本有关的信息
         例:1) var reg = /\d(\w)\d/g;
                     var ts = ‘$1a2b3c4d5e’;
                     ret = ts.match(reg);
                     conosole.log(ret)          -->  [“1a2” , “3c4”]
                   2) var reg = /\d(\w)\d/;
                     var ts = ‘$1a2b3c4d5e’;
                     ret = ts.match(reg);
                     conosole.log(ret)          -->  [“1a2” , “a”]   其中 “a” 为匹配文本分组内容
17. Stringl.protatype.split(reg)
         . split 方法把字符串分割为字符数组
                   例 : ‘a,b,c,d’.split(‘,’);  --> [“a” , ”b” , ”c” , ”d”]
         .在复杂的分割情况下我们可以使用正则表达式解决
                   例 : ‘a1b2c’3d.split(‘/\d/);  --> [“a” , ”b” , ”c” , ”d”]
18. Stringl.protatype.replace(reg, function)
         . function 参数含义
                   Function会在每次匹配替换的时候调用,有四个参数
1)      匹配字符串
2)      正则表达式分组内容,没有分组则没有该参数
3)      匹配项在字符串中的index
4)      原字符串
例:
1) ‘a1b2c3d4e5’.replace( /\d/g , function(match,index,origin){
                                                        Console.log(index);
                                                        Return parseInt(match) +1
})
-> 1
-> 3
-> 5
-> 7
-> 9
-> “a2b3c4d5e6”
2)‘a1b2c3d4e5’.replace( /(\d)(\w)(\d)/g ,
function(match , group1 , group2 , group3 , index , origin){
                                                        Console.log(match);
                                                        Return group1 + group3
})
->“1b2”
-> “3d4”
-> “a12c34e5”
 
1.【trunc(for dates)】TRUNC()函数处理日期
    语法格式:TRUNC(date[,fmt])
  其中:date 一个日期值;fmt 日期格式。
    该日期将按指定的日期格式截取;忽略它则由最近的日期截取。
   示例:
select trunc(sysdate) from dual;–2017/2/13,返回当前时间   
select trunc(sysdate,‘yy’) from dual;–2017/1/1,返回当年第一天  
select trunc(sysdate,‘mm’) from dual;–2017/2/1,返回当月的第一天  
select trunc(sysdate,‘d’) from dual;–2017/2/12,返回当前星期的第一天,即星期天  
select trunc(sysdate,‘dd’) from dual;–2017/2/13,返回当前日期,今天是2017/2/13
  select trunc(sysdate ,‘HH24’) from dual;–2017/2/13 15:00:00,返回本小时的开始时间  
select trunc(sysdate ,‘MI’) from dual;–2017/2/13 15:13:00,返回本分钟的开始时间
2.【TRUNC(for number)】TRUNC()函数处理number型数字
    语法格式:TRUNC(number[,decimals])
    其中: number 待做截取处理的数值;decimals 指明需保留小数点后面的位数,可选项,忽略它则截去所有的小数部分。
    注意:截取时并不对数据进行四舍五入。
    示例:
select trunc(123.567,2) from dual;–123.56,将小数点右边指定位数后面的截去;
     select trunc(123.567,-2) from dual;–100,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记;
     select trunc(123.567) from dual;–123,默认截去小数点后面的部分;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值