正则说简单也简单,复杂起来也复杂~
看文章,希望大家看英文的原文(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)
熟悉一些不常用的的
[\b] \b \B \s \S \n(主要n是数字,代表前面几个) (?:x)
*, +, ?, and {...} 后加? 为非贪婪(比如 /a+?/),否则贪婪匹配
x(?=y) x(?!y) 断言正则判断属性已经方法
flags, source, ignoreCase multilinees6之后
Symbol.match replace splittest, exec都会改变lastIndex
一些示例:获取url参数
function getUrlParam(key) {
var v = location.search.match(new RegExp('[?&]+'+key+'='+'([^&;]+?)(&|#|$)'));
return v ? decodeURIComponent(v[1]) : '';
}
- 日期format:
// 作者 csdn 的 Meizz
// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function(fmt)
{ //author: meizz
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
getUrlParams() {
var regex = /[?&]([^=#]+)=([^&#]*)/g,
params = {},
match;
while(match = regex.exec(location.search)) {
params[match[1]] = match[2];
}
return params;
},
extend() {
var args = [].slice.call(arguments);
for(var i=1; i < args.length; i++) {
for(var k in args[i]) {
args[0][k] = args[i][k];
}
}
return args[0];
},