Js正则表达式(附常用表达式)

前言

正则表达式由我们自己来书写"规则",专门用来检验字符串是否符合"规则"使用的,
例如:手机号、账号、密码、游戏名等检验字符串是否合法。
废话不多说,直接上干货!

创建一个正则表达式

想制定"规则",必须要按照人家要求的方式来制定;
把一些字符和符号写在//中间的东西,叫做正则表达式,比如/abcdefg/;
创建正则表达式有两个方式:字面量和构造函数。
+ 字面量创建
var reg = /abcdefg/
+ 构造函数创建
var reg = new RegExp(‘abcdefg’)

正则表达式里面的符号

元字符

.:匹配非换行的任意字符
\ :转译符号,把有意义的符号转换成没有意义的字符,把没有意义的字符转换成有意义的符号
\s :匹配空白字符(空格/制表符/…)
\S :匹配非空白字符
\d :匹配数字
\D:匹配非数字
\w:匹配字母数字下划线
\W :匹配非字符数字下划线

限定符

* :前一个内容重复至少0次,也就是可以0-正无穷次
+ :前一个内容重复至少1次,也就是可以1-正无穷次
?:前一个内容重复0次或1次
{n}:前一个内容出现n次
{n,}:前一个内容至少出现n次,也就是出现n-正无穷次
{n,m}:前一个内容出现n到m次
限定词可以配合元字符使用

边界符

^:表示开头
$:表示结尾
^ $:表示精确匹配
边界符是限定字符的开始和结尾的

特殊符号

():限定一组元素
[]:字符集合,表示写在[]里面的任意一个都行
[ ^ ]:反字符集合,表示写在[]里面之外的任何一个都行
-:范围,比如a-z表示从字符a到字符z都可以
|:或,正则里面的或s|b表示字符s或者字符b都可以

举个例子

上传自己的靓照

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <label for="photo">请上传你的靓照</label>
    <input type="file" id="photo">
    <script>
        var fileInp = document.getElementById('photo');
        fileInp.onchange = function(){
            //文件名
            var filename = this.files[0].name;
            //文件名必须是以:.jpg,.gif,.png,.jpeg,.webp
            var reg = /\.(jpg|gif|png|jpeg|webp)$/;
            if(reg.test(filename)){
                //符合要求
                alert('文件格式正确,可以上传')
            }else{
                alert('文件后缀必须是.jpg,.gif,.png,.jpeg,.webp,请重新上传')
            }
        }
    </script>
</body>
</html>

常用的正则表达式

		//1.只能用数字开头,长度在6--18位之间
        var reg = /^\d{6,18}/;
        console.log(reg.test("a123451"))
        //2.以字母开头,数字结尾,中间任意一个字符
        var reg = /^[a-zA-Z]+.+\d$/
        console.log(reg.test("a1ddw.,ds@1"))
        //3.密码不能少于6位的字符
        var reg = /.{6,}/
        console.log(reg.test("a1ddw"))
        //4.以a开头   b字符至少出现2个,至多出现6个 
        var reg = /^a[^b]*b{2,6}$/
        console.log(reg.test("a_hdkwjbbbbbb"))
        // 5.变量的命名正则表达式(不能用数字开头 由字母、数字、下划线 、$组成)
        var reg = /^\D+[a-zA-Z0-9_$]/
        console.log(reg.test("b_$bsbbasbb"))
        // 6.以010开头的座机号(后面是8位数字)
        var reg = /^(010)\d{8}$/
        console.log(reg.test("01012345678"))
        // 7.手机号以13开头,以8结尾
        var reg = /^(13)\d{8}(8)$/
        console.log(reg.test("13123456788"))
        // 8.密码只能用6个*
        var reg = /^\*{6}$/
        console.log(reg.test("*****"))
        // 9.第一位是数字,第二位是A或a,后面至多出现6个字符
        var reg = /^\d(A|a).{0,6}$/
        console.log(reg.test("2AXzzds22"))
        // 10.第一位是数字,第二位是任意一个字符,后面只能由字母、数字、下划线组成,共8位
        var reg = /^\d.[a-zA-Z0-9_]{6}$/
        console.log(reg.test("AAXzz_s2"))
        // 11.写出中国人姓名正则,2--4个中文
        var reg = /^[\u4E00-\u9FA5]{2,4}$/
        console.log(reg.test("AAXzz_s2"))
        // 12.写一个qq号的正则,至少5位,至多12位数字
        var reg = /^\d{5,12}$/
        console.log(reg.test("1234211111111"))
        // 13.邮编检验 共6位数字 第一位不能是0   
        var reg = /^[^0]\d{5}$/
        console.log(reg.test("123412"))
        // 14.检验压缩包,xxx.zip或xxx.rar或xxx.tar 三个格式
        var reg = /\.(zip|rar|tar)$/
        console.log(reg.test("111.rar"))
        //15.电子邮件 (@符号前后使用单词字符即可)   232323@qq.com
        var reg = /\d(@)[a-z]{2}\.(com)$/
        console.log(reg.test("111@qq.com"))
        //16.手机号 1 3|5|8|7 
        var reg = /^(1)(3|5|8|7)\d{9}$/
        console.log(reg.test("15111111111"))
        //17.身份证 (18位  考虑最后一位可能为x)
        var reg = /^\d{17}(\d|x|X)$/
        console.log(reg.test("45212219991027054x"))
        //18.账户名只能使用数字字母下划线,不能数字开头,长度在6--18之间
        var reg = /^[^\d]{1}\w{5,17}$/
        console.log(reg.test("q5111111111"))

下期再见

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值