~ function () {
/*
* formatTime:时间字符串的格式化处理
* @params
* templete:[string] 我们最后期望获取日期格式的模板
* 模板规则:{0}->年 {1~5}->月日时分秒
* @return
* [string]格式化后的时间字符串
*/
function formatTime(templete = "{0}年{1}月{2}日 {3}时{4}分{5}秒") {
let timeAry = this.match(/\d+/g);
return templete.replace(/\{(\d+)\}/g, (...[, $1]) => {
let time = timeAry[$1] || "00";
return time.length < 2 ? "0" + time : time;
});
}
/*
* queryURLParams:获取URL地址问号和面的参数信息(可能也包含HASH值)
* @params
* @return
* [object]把所有问号参数信息以键值对的方式存储起来并且返回
*/
function queryURLParams() {
let obj = {};
this.replace(/([^?=&#]+)=([^?=&#]+)/g, (...[, $1, $2]) => obj[$1] = $2);
this.replace(/#([^?=&#]+)/g, (...[, $1]) => obj['HASH'] = $1);
//注:[^?=&#]+指的是除了"?=&#"以外,其他字符1到多位
[^xy] 除了x/y以外的任意字符
return obj;
}
/*
* millimeter:实现大数字的千分符处理
* @params
* @return
* [string]千分符后的字符串
*/
function millimeter() {
return this.replace(/\d{1,3}(?=(\d{3})+$)/g, content => content + ',');
}
/*
* millimeter:正则验证输入框只允许输入正整数或者负整数
* @params
* @return
* [number]正整数或者负整数
*/
function integer() {
return /^-$|^-?[1-9][0-9]*$/.test(this)?this:'';
}
/*
* millimeter:正则验证输入框只允许输入正数
* @params
* @return
* [number]正数
*/
function positiveNumber() {
return /([1-9][0-9]*(\.\d{1,2})?)|(0\.\d{1,2})/.test(this)?this:'';
// 或者
// return /^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$/.test(this)?this:'';
}
/* 扩展到内置类String.prototype上 */
["formatTime", "queryURLParams", "millimeter","integer","positiveNumber"].forEach(item => {
String.prototype[item] = eval(item);
});
}();