当前位置: 首页> 健康> 母婴 > JS正则表达式学习与实践

JS正则表达式学习与实践

时间:2025/7/12 5:08:51来源:https://blog.csdn.net/qq_39410252/article/details/140853457 浏览次数:0次

JS正则表达式学习笔记

  • 1 学习笔记
    • 1.1 字符类
    • 1.2 量词和分支
    • 1.3 标志
    • 1.4 锚点
    • 1.5 断言
  • 2 常用正则
    • 2.1 检查微信浏览器
    • 2.2 检查移动端浏览器
    • 2.3 检查中文字符
    • 2.4 手机号严格
    • 2.5 手机号比较宽松
    • 2.6 手机号宽松
    • 2.7 邮箱验证
    • 2.8 金额格式
    • 2.9 身份证号
    • 2.10 至少8为有数字、大小写字符、特殊字符
  • 3 其他实践
    • 3.1 返回参数数字的千分位分隔符字符串
    • 3.2 以字符串的形式返回文件名扩展名

1 学习笔记

1.1 字符类

1、点号“.”:标识除了换行之外的任易字符;
2、字符集"[]“:匹配方括号中列举的任意一个字符;
3、取反字符集”[^]“:匹配不在方括号中列举的任意一个字符;
4、字符范围”[a-z]“、”[0-9]“:匹配方括号字符范围内的字符;
5、单词字符”\w":用于查找字母、数字和下划线;
6、非单词字符"\W":匹配除字母、数字和下划线之外的字符;
7、数字字符 “\d”:仅用来匹配数字;
8、非数字字符"\D":匹配除数字之外的字符;
9、空白符"\s":仅匹配空白字符;
10、非空白符"\S":匹配除空白符之外的字符;

1.2 量词和分支

1、任意数次匹配"":在字符后面加上,表示一个字符完全不匹配或可以匹配多次;
2、正整数次匹配"+“:表示一个字符可以出现一次或多次;
3、可选匹配”?“:表示一个字符是可选的;
4、字符出现次数匹配”{n}“:表示一个字符出现的确切次数,可以在该字符的末尾,将它出现的次数写进大括号 {} 中,如 {1};
5、字符出现至少次数匹配”{n,}“:表示一个字符至少出现的次数,可以在该字符的末尾,将它出现的次数写进大括号 {min,} 中,如 {1,};
6、字符出现的次数范围匹配”{n,m}“:表示一个字符出现的次数范围,可以在该字符的末尾,将它出现的次数写进大括号 {min,max} 中,如 {1,4};
7、分支”|":竖线允许一个表达式包含多个不同的分支。所有分支用 | 分隔;

1.3 标志

1、全局标志"g":全局标志使表达式选中所有匹配项,如果不启用全局标志,那么表达式只会匹配第一个匹配项;
2、多行标志"i":正则表达式将所有文本视作一行。但如果我们使用了多行标志,它就会单独处理每一行;
3、忽略大小写标志"m":为了使我们编写的表达式不再大小写敏感,我们必须启用不区分大小写标志;

1.4 锚点

1、匹配字符串的开始"^“:所匹配的内容必须在字符串的头部;
2、匹配字符串的结尾”$“:所匹配的内容必须在字符串的尾部;
3、单词边界"字符\b”:匹配单词的开头或末尾;
4、非单词边界"字符\B":匹配不在单词开头或末尾的位置;

1.5 断言

1、正向先行断言"(?=)“:匹配结果后面必须跟着断言的内容,但该内容不作为匹配结果;
2、负向先行断言”(?!)“:匹配结果后面必须不跟着断言的内容,但该内容不作为匹配结果;
3、正向后行断言”(?<=)“:匹配结果前面必须跟着断言的内容,但该内容不作为匹配结果;
4、负向后行断言”(?<!)":匹配结果前面必须不跟着断言的内容,但该内容不作为匹配结果;

2 常用正则

2.1 检查微信浏览器

/MicroMessenger/i

2.2 检查移动端浏览器

/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i

2.3 检查中文字符

/[\u4e00-\u9fa5]/gm

2.4 手机号严格

/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1589]))\d{8}$/

2.5 手机号比较宽松

/^(?:(?:\+|00)86)?1[3-9]\d{9}$/

2.6 手机号宽松

/^(?:(?:\+|00)86)?1\d{10}$/

2.7 邮箱验证

/^([a-zA-Z]|[0-9])(\w|-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/

2.8 金额格式

/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/

2.9 身份证号

/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

2.10 至少8为有数字、大小写字符、特殊字符

/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

3 其他实践

3.1 返回参数数字的千分位分隔符字符串

// 返回参数数字的千分位分隔符字符串
function _comma(number) {// 补全代码return `${number}`.replace(/(\d)(?=(\d{3})+$)/g, '$1,');
}

3.2 以字符串的形式返回文件名扩展名

// 以字符串的形式返回文件名扩展名
const _getExFilename = (filename) => {// 补全代码return filename.replace(/(.*)(?=\..*)/, '')
}

持续更新……

关键字:JS正则表达式学习与实践

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: