Skip to content

Heroor/RegExpLib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 

Repository files navigation

RegExpLib

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, '":"')}"}`)

About

A library of RegExp

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages