正则的简单认识

比较常用的几个规则

特殊元字符:

    \d  代表数字

    \D  代表除了数字以外的其他字符

    \w  代表数字或者字母或下划线

    \W  代表数字字母下划线以外的其他字符

    ^   代表以什么开头  若写就得在正则的最前边

    $   代表以什么结尾  若写就得在正则的最后边

    [ab]       a或b    /^[xy]$/: 要不就是以x开头结果  要不就是以y开头结尾

    [^ab]     除了ab以外的其他字符

    [a-z]     大白话就是小写字母

    [A-Z]    代表大写字母

    [a-zA-Z]  代表所有字母

    a|b        a或b

    .  代表除了换行以外的其他字符 点若在[]里边 就代表点本身了;

    () 提升优先级   分组(捕获时用到的概念)

    /^11|12$/ 以11开头或者以12结尾的字符串

    /^(11|12)$/ 要不11 要不12

    量词元字符 (量:数量) 用在要修饰的字符的后边

    ?    /\d?/ 代表前边的字符出现0或1次

    +    代表前边的字符出现1到多次

    *    代表前边的字符出现0到多次

    {n}   代表前边的字符出现n次

    {n,}  代表前边的字符出现n到多次

    {n,m} 代表前边的字符出现n到m次


 

    修饰符

    g  global  全局匹配 最多用于捕获 匹配时很少用

    i  ignoreCase  忽略大小写

    m  multiline 多行匹配

1. 使用正则的方法写出一个手机号码格式

let reg = /^1[3-9]\d{9}$/

注释:以1开头,3,4,5,6,7,8,9中的一位,9位数字 结束

2.邮箱验证

//  只验证QQ邮箱:let reg = /^1[3-9]\d{9}$/

let reg = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/

注释:w代表数字或者字母或者下划线;

+代表前面的字符出现1到多次;

*代表前面的字符出现0到多次;

  <input type="text" placeholder="输入QQ邮箱" id='inp2'>

  <button id='btn'>登录</button>

btn.onclick = function () {

let val = inp.value; // 用户输入的内容

let val2 = inp2.value;

let bol2 = reg2.test(val2)

if (bol2) {

console.log(val2)

} else {

alert('邮箱不合法')

}

}

3.验证是否位有效数字

思路:

  //+-可有可无  有的话一定是在前边

  // 小数部分可有可无  有的话一定在后边

  // 单个整数可以是 0 ,多位数不能是0开头

  // 多少位不限制

let reg = /^[+\-]?(\d|[1-9]\d+)(\.\d+)?$/

解析:+-号有的话就在前面,前面的1-9数字出现1到多次,.数字出现1到多次

4. 验证密码 “数字、字母、下划线 6-16位”

let reg = /^\w{6,16}$/

解析:以数字或字母或下划线开头6到16位

5. 验证真实姓名

华夏姓名一般是由2到4位汉子组成

let reg = /^[\u4E00-\u9FA5]{2,}(·[\u4E00-\u9FA5]{2,})?$/;

console.log(reg.test('赵')); //false

console.log(reg.test('赵四'));

console.log(reg.test('尼古拉斯·赵四'));

console.log(reg.test('巴啦啦·迪力木拉提'));

console.log(reg.test('刘伟'));

console.log(reg.test('王光明森'));

6.验证身份证号

let reg = /^\d{17}(\d|X|x)$/

解析:前面17位是数字,最后一位是X或x或数字

    升级版:使用分组获取,正则在捕获的时候,除了可以把大正则匹配的信息捕获到,而且还可以把正则中每一个小分组匹配的信息单独捕获到;如果写了分组,但是不想在捕获的时候捕获,需要加 ?:

let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(?:\d|X|x)$/;

let str = '130828199012040617';

console.log(reg.exec(str));

结果是:['130828199012040617','130828','1990','12','04','1'...]

7.属性

lastIndex:

let reg=/a/ig;

let str="hello a A one A";

do{

console.log(reg.lastIndex);//0 7 9 15

}while(reg.test(str));

Source: 正则的内容

let reg=/abc\d{3}/ig;

let str="hello a A one A";

console.log(reg.test(str));

console.log(reg.source);

8.

replace(旧内容,新内容)  替换

var str="red one blue two green scee";

var newstr=str.replace(/(red|blue|green)/ig,"<b style='color:$1;'>$1</b>");

document.write(newstr);

9.

  1. match() 匹配

var str="<b>hello</b> one <b>two</b> scee";

:

作用一: 如果左边是一个非量词元素,那么它本省代表量词,出现零或一次

作用二: 如果左边是一个量词元素,则是取消正则捕获的贪婪性

var newstr=str.match(/<b>.*?<\/b>/ig);

console.log(newstr);//惰性匹配:尽可能短的匹配  ["<b>hello</b>", "<b>two</b>"]

var newstr=str.match(/<b>.*<\/b>/ig);

console.log(newstr);//贪婪匹配:尽可能长的匹配  ["<b>hello</b> one <b>two</b>"]

10.search() 查询(不与g 一块使用)

var str="hello do Hello two HEllo scee do one";

var reg=/\bdo\b/ig;

while(reg.test(str)){

     var newstr=str.search(reg);

     console.log(newstr);//6

}

11.split() 分隔,转化成数组

var str="hello  world     one two";

var arr=str.split(/\s+/);

console.log(arr);// ["hello", "world", "one", "two"]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值