正则表达式

82 阅读3分钟

正则的概念

字符串正确的规则

作用

前端往往有大量数据效验工作,正则对象可以控制字符串的格式,从而减小服务器压力,
提高程序运行效率
正则表达式验证数据格式  前端
服务器验证数值         后端
JS的正则表达式通常都围绕着表单验证

正则对象的创建

a.构造方法
    var reg = new RegExp("格式字符串",["修饰符"]);
    var reg = new RegExp("a");//目标字符串至少包含一个a
    var reg1 = new RegExp("aaa");//目标字符串至少包含3个连续的a
test
    功能:判断目标字符串是否满足正则对象的格式
    参数:test(目标字符串)
    返回值:boolean
        console.log(reg.test("bc"));
        console.log(reg1.test("abaca"));
b.字面量
    var reg = /格式字符串/修饰符;
    var reg = /a/;
    console.log(reg.test("bca"));
    console.log(reg.test("bc"));
 注意事项:
 什么时候用构造方法创建正则
    var arr = ["heihei","haha","yingying"];
    // var reg = /arr[0]/;
    var reg = new RegExp(arr[0]);

正则的格式字符串

格式字符串:普通字符+特殊字符
普通字符:普通的字符,看起来是什么就是什么
特殊字符:拥有特殊含义的字符
a.单个字符
b.组合字符
c.各种括号
至少包含一个a
    var reg = /a/;
至少包含连续的5个a
    reg = /aaaaa/;
同时存在,同时消失
^:正则开始
$:正则结束
​
只能包含一个a
    reg = /^a$/;
只能包含3个a 
    reg = /^aaa$/;
以b开头  至少3个a  至多5个a
    reg = /^ba{3,5}$/;
6个5
    reg = /^5{6}$/;
邮编   6位数字  
    reg = /^\d{6}$/;
定义一个由字母或数字或下划线组成的用户名   范围在6,18之间   
    reg = /^\w{6,18}$/;
定义一个由字母或数字或下划线组成的用户名 但是首字母不为数字   
    reg = /^\D\w{5,17}$/; 
定义一个密码 至少6位
    reg = /^.{6,}$/;
www.baidu.com
    reg = /^www.baidu.com$/;
写一个3+5
    //+:{1,}
    reg = /^3+5$/;
​
以 13 或 15 开头的手机号
    或的表示方法
    a. (xxx|xxx|xxx)
        reg = /^1(3|5)\d{9}$/;
    b.[x1x2x3x4]
        reg = /^1[35]\d{9}$/;
只能是a-f和0-6的区间
    reg = /^[a-f][0-6]$/;
空格
    reg = /^\s$/;
[\u4e00-\u9fa5] 中文字符区间
两个中文
    reg = /^[\u4e00-\u9fa5]{2}$/;
除了
    [^x1x2x3]
    reg = /^[^abc]$/;

密码强弱的判断

由数字,字母,其他字符构成
纯数字,纯字母,纯其他字符为弱
全都有为强
其他情况为中

表单验证

action:发送数据的地址,也就是服务器接收数据的文件
method:数据提交的方式,与安全性和效率有关,get和post,默认为get
get:安全性低,但效率高,携带数据量小
post:安全性高,但效率低,携带数据量大

焦点验证表单

失去焦点 onblur
    oInputs[0].onblur = function(){
        console.log("onblur");
    }
得到焦点 onfocus
    oInputs[0].onfocus = function(){
        console.log("onfocus");
    }

正则中的相关方法和属性

正则相关的方法 
test
​
exec
    功能:返回满足正则对象的子串
    参数:exec(目标字符串)
    返回值:满足正则对象的子串,存储在长度为1的数组
var str = "11a22b33c44d";
修饰符
g:全局
    var reg = /\d+/g;
    console.log(reg.exec(str)[0]);
    console.log(reg.exec(str)[0]);
    console.log(reg.exec(str)[0]);
    console.log(reg.exec(str)[0]);
i:忽略大小写
    var str = "Hello World";
    var reg = /hello world/i;
    console.log(reg.test(str));
​
------------------------------------
字符串相关方法,正则对象作为参数
search方法  返回与正则表达式查找内容匹配的第一个子字符串的位置
    用法:str.search(reg)
    var str = "jin tian xing qi san hei hei";
    var reg = /san/;
    console.log(str.search(reg));
match
    功能:返回满足正则的子串,存储在数组中
    参数:match(正则对象)
    返回值:满足正则的子串数组
        var str = "11a22b33c44d";
        var reg = /\d+/g;
  
        console.log(str.match(reg));
replace
    replace(参数1正则对象,参数2):用参数2,替换参数1,返回被替换的字符串
        var str = "xizhiqiang de ge bi shi xizhiqiang";
        str = str.replace(/xizhiqiang/g,"老王");
        console.log(str);