正则表达式RegExp-2020-01-02

2020-01-03  本文已影响0人  增商

正则和字符串密切相关, 正则就是验证字符串的,我们可以定义一个字符串模型,然后把我们需要验证的字符串直接和我们定义的模型相匹配,找到符合我们预期的结果

一: 创建方法

  • 字面量创建
    var reg = /abce/,
    str = "abceg";
    看定义的规则
/abce/ //=>这里说明我定义规则abce 必须挨在一起,匹配上述规则
reg.test(str) //=>true
  • 创建对象
    new RegExp("abc","mig")
new RegExp("abc","mig") //=>属性事i m g稍后再做解释

正常情况和非正常情况

图片.png
图片.png
//同一个引用和不同引用,创建相同模式的正则,参数传正则
var reg=/abc/i,
str='abcd';
            
// 去掉new 和不去掉new 区别
var reg1 = new RegExp(reg);
reg.abc='为reg加属性reg1是没有的';
console.log(reg.abc);
console.log(reg1.abc); //=>不同的人
            
var reg1 = RegExp(reg); //=>同一个人,不同的引用而已
console.log(reg1.abc);

二: 修饰符属性参数讲解

  • i == ignoreCase
  • g == global 全局匹配
  • m == 多行匹配

例子:ignoreCase

var reg=/ab/;
var str='AB'
document.write(str.match(reg))
图片.png
//反之i
var reg=/ab/i;
var str='AB'
document.write(str.match(reg))
图片.png

例子:global匹配
这里用到字符串上面的match()方法

var reg=/ab/ig;
var str='ABABABABAB'
document.write(str.match(reg))
图片.png

例子:m多行匹配
不换行前,我需要全局匹配a匹配结果为两个

图片.png
若我需要匹配以什么开头,以a开头的呢?加^号即可
图片.png
//=>以a开头,以什么字母开头^
var reg=/^a/g;
var str='abcda'
console.log("全局匹配"+ str.match(reg));
document.write(str.match(reg))

加换行符\n为什么还是一个a?

图片.png
图片.png

m多行匹配

指的就是开头和结尾,但为何加\n没有意义呢?是因为它认为在没有m多行匹配前,你加这个也没用,它还认为你这个是一行

------------------------------------------------------------------------31:10分前


三: 表达式:[]

表达式一个[]内的就是一个规则范围,当然是匹配一个
假设:

var reg=/[123456789][123456789][123456789]/g
//=>代标范围,一个[]就代表一位数字范围;3位数字
var str='12433hasjkd2343654o0124'
console.log(str.match(reg));
//=>124,234,365,124

省略表达:

var reg=/[0-9A-z][cd][d]/


图片.png
var reg=/[0-9A-z][cd][d]/ //=>看相邻的规则一位
var str='askjdkasjdl32423cd'
//=>3cd

非表达式:

[]假设写在表达式里,意味着非,否定

var reg=/[^a]/g
var str='abcsakjsada'
//=>b,c,s,k,j,s,d
var reg=/[^a][^b]/g
//=>bc,sa,kj,sa,da

(|)或运算 => 相当于区间聊胜于无

var r11=/(abc|bcd)[0-9]/g //表达式区间
var str11='abc0'
console.log(str11.match(r11));
图片.png

四: 元字符

图片.png
\w === [0-9A-z_] word
\W === [^\w]
    var reg=/\was/g //=>w === [0-9A-z_]
    var reg1=/\Was/g
    var str='b*asd'
    console.log(str.match(reg1));
图片.png
图片.png
  • \s === [\t\n\r\v\f ] 加空格


    图片.png
  • \b === 单词边界


    图片.png
  • \t ===匹配真实有的内容\t
    图片.png
  • n === 回车


    图片.png
  • unicode 编码


    图片.png
//4个0到4个f 区间
var nic=/\u6211\u7231\u5b66\u4e60,\u5b66\u4e60\u7231\u6211imycode/g
var str='我爱学习,学习爱我imycode nice'
console.log(str.match(nic));

一切字符: ALL

var nic1=/[\u0000-\uffff]/g //=>一切字符 ALL
var str='我爱学习,学习爱我imycode nice '
console.log(str.match(nic1));

一切字符: all

var nic2=/[\d-\D]/g //=>一切字符 ALL
console.log(str.match(nic2));
图片.png

. 点元字符匹配

查找单个字符,除了换行和行结束符。


图片.png
var dian=/./g
// . === [^\r\n]
console.log(str.match(dian));
上一篇下一篇

猜你喜欢

热点阅读