A library of RegExp
建此项目的起因是工作中偶尔会用到正则表达式,但是很少会自己去写,一般都是在网上搜一下拿来用的,但是在网上搜索到的正则表达式大部分都匹配的不完美,匹配规则常常未考虑到一些细节性的情况,而且工作中也会遇到特(qi)殊(pa)的匹配需求,遂决定建立此项目来记录工作中曾遇到的一些特殊的、有趣的,以及自己动手写的正则表达式,欢迎交流分享!
然后这是一个缓慢更新的项目,嗯,没毛病
- 可带两位小数的非零正数(可用于输入非零的 金额/价格/重量/距离 等)
/^([1-9]\d*|[0])\.([1-9]\d?|[0][1-9])$|^[1-9]\d*(\.[0]{1,2})?$/
/*
* 0 false
* 0.0 false
* 0.00 false
* 01 false
* 01.1 false
* ...
*
* 1 true
* 1.0 true
* 2.5 true
* 3.00 true
* 4.50 true
* 5.56 true
* 6.02 true
* 9999999999999 // true
* ...
*/
- 两位小数正数 (可用于零或所有正数,可带有两位小数)
/^\d+(\.\d{1,2})?$/
/*
* 0.001 false
* -1 false
* -3.14 false
* ...
*
* 0 true
* 1 true
* 0.1 true
* 0.01 true
* 0.00 true
* 10 true
* 1999 true
* ...
*/
- 手机号码
/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/
- 格式化 (可用于 电话号/数字/金额 等单位的格式化)
// 1 分割数字
'13366669999'.replace(/\B(?=(\d{4})+$)/g, '-') // '133-6666-9999'
'125131613624134'.replace(/\B(?=(\w{3})+$)/g, ',') // '125,131,613,624,134'
// 2 格式化时间
const dateArr = '20180705'.split('')
'xxxx-xx-xx'.replace(/x/g, () => dateArr.shift()) // '2018-07-05'
// 3 去掉个位数的0
'2018-05-18 06:00'.replace(/(\D)0(?=\d)/g,'$1') // '2018-5-18 6:0'
// 4 替换星号
'13666666666666666666'.replace(/(?<=\d{3})\d(?=\d{4})/g, '*') //'136*************6666'
- 获取 query 参数
// 利用了 JSON.parse(),将 query 拼接成了 JSON 并解析:
JSON.parse(`{"${location.search.slice(1).replace(/\&/g, '","').replace(/\=/g, '":"')}"}`)