美文网首页
2018-11-15

2018-11-15

作者: kathyever | 来源:发表于2018-11-15 17:40 被阅读0次

打卡时间:
15:30-16:00
21:40-22:40

RegExp实例属性

RegExp的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息。
● global:布尔值,表示是否设置了g标志
● ignoreCase:布尔值,表示是否设置了i标志
● lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
● multiline:布尔值,表示是否设置了m标志。
● source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。

source属性保存的是规范形式的字符串,即字面量形式所用的字符串

RegExp实例方法

RegExp对象的主要方法是exec(),该方法是专门为捕获组而设计的。exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配项的情况下返回null。返回的数组虽然是Array的实例,但包含两个额外的属性:index和input。其中,index表示匹配项在字符串中的 位置,而index表示应用正则表达式的字符串。

var text = 'mom and dad and baby'
var pattern = /mom( and dad( and baby)?)?/gi

var matches=pattern.exec(text);
alert(matches.index);//0
alert(matches.input);//"mom and dad and baby"
alert(matches[0]);
alert(matches[1]);
alert(matches[2]);

正则表达式的第二个方法是test( ),它接收一个字符串参数。在模式与该参数匹配的情况下返回true;否则,返回false。在只想知道目标字符串与某个模式是否匹配,但不需要知道其文本内容的情况下使用这个方法非常方便。因此test( )方法经常被用在if语句中。例:

var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-d{4}/;

if(pattern.test(text)){
    alert("The pattern was matched.");
}
//这个例子中使用正则表达式来测试了一个数字序列号。如果输入的文本与模式匹配,则显示一条消息。我们只关心它输入是否有效,至于它为什么无效无关紧要

RegExp构造函数属性

RegExp构造函数包含一些属性(这些属性在其他语言中被看成是静态属性)。这些属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。
这些属性都有一个独特之处,就是可以通过两种方法访问它们。


image.png

使用这些属性可以从exec()或test()执行的操作中提取出更具体的信息。

var text = "this has been a short summer" ;
var pattern = /(.)hort/g;

if(pattern.test(text)){
    alert(RegExp.input);//this has been a short summer
    alert(RegExp.leftContext);//this has been
    alert(RegExp.rightContext);//summer
    alert(RegExp.lastMatch);//short
    alert(RegExp.lastParen);//s
    alert(RegExp.multiline);//false
}

模式的局限性

尽管ECMAScript中的正则表达式功能还是比较完备的,但仍然缺少某些语言所支持的高级正则表达式特性。下面流出了ECMAScript正则表达式不支持的特性。

◆ 匹配字符串开始和结尾的\A和\Z锚
◆ 向后查找(lookbehind)
◆ 并集和交集类
◆ 原子组(atomic grouping)
◆ Unicode支持(单个字符串除外,如\uFFFF)
◆ 命名的捕获组
◆ s(single,单行)和(free-spacing,无间隔)匹配模式
◆ 条件匹配
◆ 正则表达式注释

该方法通过传入两个时间点,来计算两个时间点之间的时间差,并将其转化成天时分秒
例子:

//var start = Date.now("2018/11/11");
//var endDate = Date.now('2018/12/12);

   function getDate(startDate, endDate) { 
       // endDate-start
      // 是否先把两个时间转换为字符串   ,
      //再以结束的时间减去开始的时间,
      //将两个时间的字符串再次转换为时间?
   }


var start = Date.parse("2018/11/11 12:58:12");
var endDate = Date.parse("2018/12/12");
function  getDays(start,endDate) {
   var second = (endDate-start)/1000;
  var min=second/60;
  var hour=min/60;
  var day=hour/24;
 return days;
};
function  getDate(start,endDate) {
   var mill = endDate-start;//
    var days=parseInt(mill/(1000*60*60*24))//30.459583333333335
    var leftDays=mill/(1000*60*60*24)-days;//0.459583333333335
    var hours=parseInt(leftDays*24);//11
    var leftHours=leftDays*24-hours;//0.030000000000040217
    var min=parseInt(leftHours*60);//1
    var letfMin=leftHours*60-min;//0.800000000002413
    var second=parseInt(letfMin*60);
    var leftSecond=letfMin*60-second;//
    var mills=leftSecond*1000;
     return days+" "+hours+" "+min+" "+second+" "+mills;
};





相关文章

网友评论

      本文标题:2018-11-15

      本文链接:https://www.haomeiwen.com/subject/ytpefqtx.html