Open 5Mi opened 8 years ago
正则表达式命名捕获组 编号的捕获组 //正则表达式命名捕获组 const RE_DATE = /([0-9]{4})-([0-9]{2})-([0-9]{2})/;
const matchObj = RE_DATE.exec('1999-12-31'); const year = matchObj[1]; // 1999 const month = matchObj[2]; // 12 const day = matchObj[3]; // 31 复制代码通过数字引用捕获组有几个缺点:
找到捕获组的数量是一件麻烦事:必须使用括号。 如果要了解组的用途,则需要查看正则表达式。 如果更改捕获组的顺序,则还必须更改匹配代码。
命名的捕获组
ES9中可以通过名称来识别捕获组:(?
const matchObj = RE_DATE.exec('1999-12-31'); const year = matchObj.groups.year; // 1999 const month = matchObj.groups.month; // 12 const day = matchObj.groups.day; // 31
// 使用解构语法更为简便 const {groups: {day, year}} = RE_DATE.exec('1999-12-31'); console.log(year); // 1999 console.log(day); // 31 复制代码可以发现,命名捕获组有以下优点:
找到捕获组的“ID”更容易。 匹配代码变为自描述性的,因为捕获组的ID描述了正在捕获的内容。 如果更改捕获组的顺序,则无需更改匹配代码。 捕获组的名称也使正则表达式更容易理解,因为您可以直接看到每个组的用途。
作者:拓跋zhleven 链接:https://juejin.im/post/5bfe003f5188252bf829c3fb 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
JS Date 对象用于处理日期和时间。
var myDate=new Date()
ios中 new Date() 不支持类似1990-12-1这种格式 需转换为类似1990/12/1 项目中
获取某个月的天数
利用toLocaleString格式化日期
和这里 参考