正则和字符串密切相关, 正则就是验证字符串的,我们可以定义一个字符串模型,然后把我们需要验证的字符串直接和我们定义的模型相匹配,找到符合我们预期的结果
一: 创建方法
- 字面量创建
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多行匹配
图片.png
不换行前,我需要全局匹配a匹配结果为两个
若我需要匹配以什么开头,以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));
网友评论