常用正则
收集开发中的一些常用正则,使用时建议根据实际需求进行修改
由于格式化会在前面添加分号,故采用变量形式
正则表达式应当符合实际需求即可,无需过于追求完美。有时候过于追求准确性可能反而破坏实际需求。例如,手机号、邮箱、URL 的正则,很多人试图编写完美的表达式,结果过于严格,反而引发了问题,从而影响了用户的正常使用
JS 正则表达式完整教程
验证相关
是否是金额(精确到分)
1
| const MONEY_PATTERN = /^(0|([1-9]\d*))(\.\d{1,2})?$/
|
更严格
1 2
| const MONEY_PATTERN = /(?:^[1-9]([0-9]+)?(?:\.[0-9]{1,2})?$)|(?:^(?:0){1}$)|(?:^[0-9]\.[0-9](?:[0-9])?$)/
|
是否是手机号
1
| const MOBILE_PATTERN = /^1\d{10}$/
|
1
| const MOBILE_PATTERN = /^1[3-9]\d{9}$/
|
是否是邮箱号
1
| const EMAIL_PATTERN = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
|
更严格的邮箱正则 —— 参考 MDN
1 2
| const EMAIL_PATTERN = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
|
是否是 QQ 号
1
| const QQ_NUMBER_PATTERN = /^[1-9]{1}\d{4,11}$/
|
是否是链接地址
1 2
| const URL_PATTERN = /^(https|http):\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/
|
是否是身份证号码
1 2
| const ID_CARD_NUMBER_PATTERN = /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/
|
是否是 16 进制颜色
1
| const HEX_COLOR_PATTERN = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/
|
格式相关
344 格式手机号
从左到右匹配:
1
| const pattern = /(^\d{3}|\d{4}\B)/g
|
举 🌰
1
| '15512341234'.replace(/(^\d{3}|\d{4}\B)/g, '$1 ')
|
从右到左匹配:
1
| const pattern = /\B(?=(\d{4})+\b)/g
|
举 🌰 :
1
| '15512341234'.replace(/\B(?=(\d{4})+\b)/g, ' ')
|
隐藏手号中间 4 位[
1
| const pattern = /(\d{3})\d{4}(\d{4})/
|
举 🌰 :
1
| '15512341234'.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
|
数字千分位格式化
1
| const pattern = /(\d)(?=(\d{3})+\.)/g
|
举 🌰 :
1
| '5201314.1314'.replace(/(\d)(?=(\d{3})+\.)/g, '$1,')
|
保留两位小数:
1
| const pattern = /(\d)(?=(\d{3})+\.)/g
|
举 🌰 :
1
| ;(5201314.1314).toFixed(2).replace(/\B(?=(\d{3})+\b)/g, ',')
|