js正则(判断)

在这里插入图片描述

这里为了方便学习呢,首先我们先来认识一下正则。

了解正则

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
    正则表达式在代码中常被简写为regex,regexp或者RE。

我们可以自己定制自己需要的一些正则表达式,从了解正则创建开始。
1.给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”)。
2.可以通过正则表达式,从字符串中获取我们想要的特定部分。
  • 通过new关键字创建正则

var box = new RegExp("hello", "ig");

  • 省略new关键字创建正则

var box = RegExp("hello", "ig");

  • 省略new关键字创建正则

var box = /hello/ig; alert(box); // /hello/gi;

此处是不是对ig、gi产生了疑问?

   没关系,我们马上来进行介绍。

正则表达式常用的修饰符

   i 忽略大小写 // g 全局匹配 // m 换行匹配(遇到换行字符,自动重新计算行首)

我们需要知道必会的正则元字符(如下图)

在这里插入图片描述

接下来需要了解正则的一些基本方法
  • test方法;
    
    格式:正则.test(字符串);
    功能:在字符串中匹配正则是否存在;
    返回值:如果存在返回true
           如果不存在就返回false
     var str = "how aRe you";
     var box = /are/i;
     alert(box.test(str));
     // 该输出结果为true 说明存在。
  • exec方法;
     格式:正则.exec(字符串)
     功能:在字符串中匹配正则是否存在;
     返回值:如果存在返回一个数组,数组里面存放着匹配的内容;
            如果不存在,返回null;
    var str = "how aRe you";
    var box = /are/i;
     alert(box.exec(str).length);
    // 该输出结果为1 说明存在。

在这里插入图片描述好,接下来步入正题。

正则判断的案例
【注】可以参照上图进行比对理解

   1.验证邮政编码

 var box = /^[1-9]\d{5}$/;
            alert(box.test("100000")); // true
            alert(box.test("018000")); // false

   2.判断文件类型是否为压缩包(zip|rar|rg)

var box = /^\w+\.(zip|rar|rg)$/i;
            alert(box.test("1.zip"));
            alert(box.test("333.rar"));

   3.匹配一个字符串是纯中文组成的字符串

var box = /^[\u4e00-\u9fa5]+$/;
            alert(box.test("我是中国人为武汉加油"));
看了上述案例你是否对正则判断有了些许了解呢?
在这里插入图片描述废话不多说,接下来我们看一个稍微复杂的案例,并且进行实际的应用吧~!
邮箱验证&密码强度验证
   开始之前,我们需要先了解一下邮箱验证的步骤以及密码强度验证的步骤
邮箱验证

      1.我们需要用到的事件
         失去焦点事件 onblur,当输入框失去焦点的时候开始进行判断
      2.一般邮箱的判断条件(我们这里参照163邮箱)
         长度范围:6~18个字符;
         邮箱地址:必须已英文字母开头;
         邮箱规范:必须由字符、数字和下划线组成;
  当我们所有条件都满足的时候,需要将提示信息修改为该邮件地址可注册,使得用户知道邮箱验证通过。

接下来我们开始编写代码

   body部分,一个简单的页面结构

<div id='div1'>
        <input id='username' type="text" placeholder="用户名" />
        <!-- span 用于提示信息 -->
        <span id='username_span'>6~18个字符,可使用字母、数字、下划线,需以字母开头</span>
        <input id='password' type="password" placeholder="密码" />
        <div id='test'>
            <span></span>
            <span></span>
            <span></span>
        </div>
    </div>

我们从邮箱验证开始,首先获取到邮箱输入框以及提示信息span标签

window.onload = function () {
            var oUsername = document.getElementById("username");
            var oUsernameSpan = document.getElementById("username_span");

          
        }

给输入框添加失去焦点事件

oUsername.onblur = function () {}

添加正则判断(依据上述步骤开始进行编写正则判断)

oUsername.onblur = function () {
                //获取输入框的内容
                var oValue = oUsername.value;
                //1、判断用户名的长度6~18长度
                if (oValue.length < 6 || oValue.length > 18) {
                    oUsernameSpan.style.color = 'red';
                    oUsernameSpan.innerHTML = "!长度应为6~18个字符";

                    //2、判断首字符是否是字母
                } else if (/[^a-zA-Z]/.test(oValue[0])) {
                    oUsernameSpan.style.color = 'red';
                    oUsernameSpan.innerHTML = "!邮件地址必需以英文字母开头";

                    //3、判断所有的字符都是数字、字母和下划线组成  
                } else if (/\W/.test(oValue)) {
                    oUsernameSpan.style.color = 'red';
                    oUsernameSpan.innerHTML = "!邮件地址需由字母、数字或下划线组成";
                } else {
                    oUsernameSpan.style.color = 'green';
                    oUsernameSpan.innerHTML = '✅恭喜,该邮件地址可注册';
                }

}

看到这里呢,恭喜你第一个操作邮箱验证已经完全了解了,那么我们开始下一个操作

密码&密码强度验证

      1.我们需要用到的事件
         按键抬起事件 onkeyup,当按键抬起的时候进行判断。
      2.密码以及密码强度的判断条件
         长度范围:6~18个字符;
         强度设定:
                   强:纯大写字母 + 纯小写字母 + 纯数字;
                   中:两两进行组合;
                   弱:任意满足一种条件即可;
  当我们所有条件都满足的时候,需要将提示信息修改为该密码可以使用,使得用户知道密码验证通过。
那么同上,我们首先第一步需要获取到密码输入框、提示信息div标签以及显示密码强度的span标签

            var oPassword = document.getElementById("password");
            var oTest = document.getElementById("test");
            var aSpans = oTest.getElementsByTagName("span");

与邮箱验证不同的是我们需要添加的事件为onkeyup,当我们输入密码结束的时候(按键抬起)进行判断

oPassword.onkeyup = function () {}

接下来去添加判断条件(依据上述步骤开始进行编写正则判断)

             var oValue = oPassword.value; // 获取到输入框的值
             //1、判断密码输入长度是否满足>=6
             if (oValue.length < 6 || oValue.length > 18) {
                 oTest.style.display = 'none';
             } else {
                 oTest.style.display = 'block';

                 //取消上一次选中的节点的样式
                 for (var i = 0; i < aSpans.length; i++) {
                     aSpans[i].className = "";
                 }

                 //2、判断密码强度

                 if (/^\d+$/.test(oValue) || /^[a-z]+$/.test(oValue) || /^[A-Z]+$/.test(oValue)) {
                     aSpans[0].className = 'active';
                 } else if (/\d/.test(oValue) && /[a-z]/.test(oValue) && /[A-Z]/.test(oValue)) {
                     aSpans[2].className = 'active';
                 } else {
                     aSpans[1].className = 'active';
                 }

                }

看到这里,我们一个简单的正则判断操作就完成啦~!

以上就是对正则判断的一个简单介绍,先写这么多,以后还会陆续更新一些H5的知识。

如果看完之后对你有些许帮助的话,不妨点个关注~!在这里插入图片描述

### 判断 JavaScript 中正整数的正则表达式JavaScript 中,可以使用正则表达式来验证一个字符串是否表示一个正整数。以下是用于匹配正整数的一个常见正则表达式: ```javascript const positiveIntegerRegex = /^[1-9]\d*$/; ``` 该正则表达式的含义如下: - `^` 表示匹配输入字符串的开始位置。 - `[1-9]` 确保第一个字符是非零数字(排除以 0 开头的情况)[^1]。 - `\d*` 允许多个后续数字出现,其中 `\d` 匹配任意单个十进制数字,而 `*` 表示前面的内容可重复零次或多次。 - `$` 表示匹配输入字符串的结束位置。 需要注意的是,在实际应用中,由于 JavaScript 的 Number 类型基于双精度浮点数标准 (IEEE 754),能够精确表示的最大安全整数为 \(2^{53} - 1\) 即 9007199254740991。因此对于超过这个范围的数值,即使通过上述正则表达式验证成功,也可能因存储为浮点数而导致不准确性。 下面提供一段完整的代码示例展示如何利用此正则表达式检测给定值是否为有效的正整数: ```javascript function isPositiveInteger(value) { const positiveIntegerRegex = /^[1-9]\d*$/; return typeof value === 'string' && positiveIntegerRegex.test(value); } console.log(isPositiveInteger('1')); // true console.log(isPositiveInteger('0')); // false, because it's not strictly positive. console.log(isPositiveInteger('-1')); // false, negative numbers are excluded. console.log(isPositiveInteger('1.5')); // false, decimal points make this invalid as an integer. console.log(isPositiveInteger('abc')); // false, non-numerical characters fail the test. console.log(isPositiveInteger(String(Number.MAX_SAFE_INTEGER))); // true, within safe range of integers that can be accurately represented by JS Numbers. ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值