记录常用的正则表达式

发布于 2023-05-06 21:03:53 字数 2895 浏览 69 评论 0

旨在记录平常项目中用到的一些正则表达式,偶尔回来看下,关于正则表达式可以看 MDN,或者可以看我整理的另一篇文章

1. 身份证号码、手机号码脱敏处理

身份证脱敏策略:保留前 6 位和最后 2 位,其余部分省略。
手机号码脱敏策略:保留前 3 位和最后 4 位,其余部分省略。

为了保护隐私,示例中身份证号、手机号码均为胡乱输入。如有相同纯属巧合,抱歉!

// 身份证脱敏
const idNumber = '801823200507142619'
idNumber.replace(/(\w{6})\w*(\w{2})/, '$1******$2') // "801823******19"

// 手机号码脱敏
const telephone = '13463592385'
telephone.replace(/(\w{3})\w*(\w{4})/, '$1****$2') // "134****2385"

2. 小数点后保留 2 位小数

思路请看文章

const reg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{2})$/

console.log(reg.test(0.11)) // true
console.log(reg.test(5.12)) // true

console.log(reg.test(1)) // false
console.log(reg.test(2.5)) // false
console.log(reg.test(3.324)) // false
console.log(reg.test(4.)) // false
console.log(reg.test(5.00)) // false,请注意数值 5.00 的写法会直接转为 5 再做判断,所以是 false。
console.log(reg.test('5.00')) // true,所以字符串形式是匹配成功的。

3. 格式化 — 每 N 位空格隔开

下面示例中每 4 位空格隔开,可根据各自需求自行调整。

// 格式化
const str = '801823200507142619'
str.replace(/(.{4})/g, '$1 ') // "8018 2320 0507 1426 19"


// 提供一些辅助方法
const str2 = '  abc def  ' // 前后各两个空格

// 删除所有空白符
str2.replace(/\s/g, '') // "abcdef"

// 删除字符串第一个空白符和末尾最后一个空白符
str2.replace(/^\s|\s$/g, '') // " abc def "

// 删除所有前导和后置空白符,相当于 String.prototype.trim() 方法
str2.replace(/^\s*|\s*$/g, '') // "abc def"

4. 匹配中文字符

const reg = /^[\u4e00-\u9fa5]+$/

console.log(reg.test('')) // false
console.log(reg.test('123')) // false
console.log(reg.test('你好')) // true

5. 判断苹果设备

const isAppleDevice = /Mac|iPod|iPhone|iPad/.test(navigator.platform)

6. 判断移动设备

const isMobile = /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|IEMobile)/i.test(navigator.userAgent)

7. 语义化版本号判断

// https://regex101.com/r/vkijKf/1/
const semVerReg = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/

console.log(semVerReg.test('1.0.0')) // true
console.log(semVerReg.test('v1.0.0')) // false
console.log(semVerReg.test('1.0')) // false

若要支持更多特性(如 1.0.0-alpha 等)、版本比较等,可以使用 semver 这个库。

参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
22 人气
更多

推荐作者

eins

文章 0 评论 0

世界等同你

文章 0 评论 0

毒初莱肆砂笔

文章 0 评论 0

初雪

文章 0 评论 0

miao

文章 0 评论 0

qq_zQQHIW

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文