js正则表达式
正则表达式的规则
一个具有特殊意义的字符串。
正则表达式在多种语言中都可以使用,
如:在 Java 中可以用正则表达式,在JavaScript 中也可以使用正则表达式。
\d 数字
\D 非数字
\w 单词:a-zA-Z0-9_ //注意包括下划线
\W 非单词
. 通配符,匹配任意字符
{n} 匹配 n 次
{n,} 大于或等于 n 次
{n,m} 在 n 和 m 之间
+ 1~n 次
* 0~n 次
? 0~1 次
^ 匹配开头
$ 匹配结尾
[13579] 匹配 1 或 3 或 5 或 7 或 9,即这 5 个数字之一
[0-9] 匹配 1 到 9,即 0,1,2,3,4,5,6,7,8,9 中的数字之一
正则表达式的创建方式
方式一
var reg = new RegExp("正则表达式");
说明:正则表达式在 JS 中是一个对象。Regular Expression。
方式二
var reg = /正则表达式/;
说明:以/开头,以/结尾,中间是正则表达式。
//两种方式的区别
1_在 JS 中,正则表达式的两种声明方式对于“\d、\D”之类的匹配模式中,
方式一:需要转义;如:new RegExp(“\\d”)
方式二:无需转义。如:/\d/
2_方式一:
支持字符串拼接,支持变量,更加灵活;如:new RegExp(“\\d”+变量)
方式二:
对于固定的表达式,书写起来方便快捷、更加直观。如:/\d{3}/
匹配模式
i :忽略大小写比较
匹配模式的两种写法
var reg = new RegExp("正则表达式", "匹配模式");
如:new RegExp("abc","i");
var reg = /正则表达式/匹配模式; 如:/abc/i
正则表达式中的常用方法
boolean test("字符串") 如果正则表达式匹配字符串,返回 true,否则返回 false
var reg1 = new RegExp("\\d{3}");
var result1 = reg1.test("123");
var reg2 = /\d{3}/;
var result2 = reg2.test("123");
var reg3 = /java/i;
var result3 = reg3.test("Java");
JS 匹配上与 Java 中的不同
Java 默认情况下必须要精确匹配,
而在 JS 中默认是模糊匹配,只要字符串包含了正则表达式的内容就返回 true。
正则表达式 匹配字符串 Java 中匹配结果 JavaScript 中匹配结果
\d{3} a123b false true
^\d{3} 123b false true
\d{3} a123 false true ^\d{3} 推荐 123 true true
^\d{3}$ 123a123 false false
请在 JS 中使用正则表达式进行验证。
用户名:只能由英文字母和数字组成,长度为 4~16 个字符,并且以英文字母开头
/^[a-zA-Z][a-zA-Z0-9]{3,15}/ 密码: 数字 6-20 个字符 /^[0-9]{6,20}/
生日:生日的年份在 1900~2009 之间,
生日格式为 1980-5-12 或 1988-05-04 的形式,
/^((19\d{2})|(200\d))-(0?[1-9]|1[0-2])-(0?[1-9]|[1-2]\d|3[0-1])/ 匹配中文字符的正则表达式: /^[\u4e00-\u9fa5]/
匹配双字节字符(包括汉字在内):/^[^\x00-\xff]/ //可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:/^\n\s*\r/ //可以用来删除空白行
匹配HTML标记的正则表达式:/^<(\S*?)[^>]*>.*?</\1>|<.*? />/ 匹配首尾空白字符的正则表达式:^\s*|\s*
//可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)
匹配Email地址:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/ 电子邮箱:符合邮箱地址的格式 /^\w+@\w+(.\w{2,3}){1,2}/
\w 等价于[a-zA-Z0-9_]
匹配网址URL的正则表达式:/^[a-zA-z]+://[^\s]*/ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线): ^[a-zA-Z][a-zA-Z0-9_]{4,15}
匹配国内电话号码:/^\d{3}-\d{8}|\d{4}-\d{7}/ //匹配形式如 0511-4405222 或 021-87888822 匹配腾讯QQ号:/^[1-9][0-9]{4,}/ //腾讯QQ号从10000开始
匹配中国邮政编码:/^[1-9]\d{5}(?!\d)/ //中国邮政编码为6位数字 匹配身份证:/^\d{15}|\d{18}/
//中国的身份证为15位或18位
匹配ip地址:/^\d+\.\d+\.\d+\.\d+/ //提取ip地址时有用 匹配特定数字: ^[1-9]\d* //匹配正整数
^-[1-9]\d* //匹配负整数 ^-?[1-9]\d* //匹配整数
^[1-9]\d*|0 //匹配非负整数(正整数 + 0) ^-[1-9]\d*|0 //匹配非正整数(负整数 + 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d* //匹配正浮点数 ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*) //匹配负浮点数
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0) //匹配浮点数 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0 //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0 //匹配非正浮点数(负浮点数 + 0) 匹配特定字符串: ^[A-Za-z]+ //匹配由26个英文字母组成的字符串
^[A-Z]+ //匹配由26个英文字母的大写组成的字符串 ^[a-z]+ //匹配由26个英文字母的小写组成的字符串
^[A-Za-z0-9]+ //匹配由数字和26个英文字母组成的字符串 ^\w+ //匹配由数字、26个英文字母或者下划线组成的字符串
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理