正则表达式的初步了解

认识正则表达式

正则表达式(Regular Expression)是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。

正则表达式有很多用处,例如:检索关键字,过滤敏感字符,表单验证等等。

正则表达式的灵活性、逻辑性和功能性都很强,可以迅速地用极简单的方式达到字符串的复杂控制。对于刚接触的人来说,比较晦涩难懂。比如:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$。不过,实际开发中,一般都是直接复制已经写好的正则表达式,会使用正则表达式并且根据实际情况修改正则表达式即可。

接下来我们继续了解正则表达式的基本使用。

正则表达式的简单使用

创建

js中有两种方式创建正则表达式

// 方式一:通过调用RegExp对象的构造函数创建 
var reg = new RegExp(/123/);
// 方式二:利用字面量创建 正则表达式 
var reg = /123/

测试

test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串。

var reg = /abc/;
var n = reg.test('aabbcc');
console.log(n); // false
var n = reg.test('abcaabbcc'); //true

正则表达式的特殊字符

一个正则表达式可以由简单的字符构成,比如 /abc/,也可以是简单和特殊字符的组合,比如 /ab*c/ 。其中特殊字符也被称为元字符,在正则表达式中是具有特殊意义的专用符号,如 ^ 、$ 、+ 等。特殊字符非常多,可以参考MDN-正则表达式,或者参考jQuery 手册:正则表达式部分。

测试可以借助 正则测试工具

边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符

边界符说明
^表示匹配行首的文本(以谁开始)
$表示匹配行尾的文本(以谁结束)
var str = /^abc/;
console.log(str.test('abcabcdfiodjifj')); // true
console.log(str.test('aababc')); // false

如果 ^和 $ 在一起,表示必须是精确匹配。

var str = /^abc$/;
console.log( str.test('abc234567abc') ); //false
console.log( str.test('abc') ); // true

字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内。

方括号[]

//精确匹配,多选一
var reg = /^[a|b|c]$/;
console.log( reg.test('') );  // false
console.log( reg.test('ab') ); // false
console.log( reg.test('a') ); // true
console.log( reg.test('b') ); // true
console.log( reg.test('c') ); // true
console.log( reg.test('abc') ); //false

//精确匹配,多选一
var reg1 = /^[a-zA-Z0-9]$/;
console.log( reg1.test('a')); //true
console.log( reg1.test('B')); //true
console.log( reg1.test('ab')); //false

方括号内部加上 ^ 表示取反,只要包含方括号内的字符,都返回 false

// 取反
var reg2 = /^[^a-zA-Z0-9]$/;
console.log(reg2.test('a'));//false
console.log(reg2.test('B'));//false
console.log(reg2.test(8));//false
console.log(reg2.test('!'));//true

量词符

量词符用来设定某个模式出现的次数。

量词说明
*重复0次或更多次
+重复1次或更多次
?重复0次或1次
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次
// *
var reg = /^[abc]*$/;
// +
var reg = /^[abc]+$/;
// ?
var reg = /^[abc]?$/;
// {n}
var reg = /^[abc]{n}$/;
// {n,}
var reg = /^[abc]{n,}$/;
// {n.m}
var reg = /^[abc]{n,m}$/;

小案例-表单验证

来做个用户名表单验证的简单小案例吧:

功能需求:

  1. 如果用户名输入合法, 则后面提示信息为: 用户名合法,并且颜色为绿色
  2. 如果用户名输入不合法, 则后面提示信息为: 用户名不符合规范, 并且颜色为红色
    提示不正确
    提示正确

结构

<input type="text"><span></span>

样式

.right {
    color: green;
}
.error {
    color: red;
}

javaScript

var txt = document.querySelector('input');
tet.onblur = function () {
    //正则表达式
    //
    var reg = /^[a-zA-Z0-9_-]{6,16}$/;
    if (reg.test('this.value')) {
        // 输入合法
        this.nextElementSibling.innerHTML = '<b>用户名格式输入正确</b>';
        this.nextElementSibling.className = 'right';
    } else {
        // 输入不合法
        this.nextElementSibling.innerHTML = '<b>用户名格式输入不正确</b>'
        this.nextElementSibling.className = 'error';
    }
}

预定义类

预定义类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值