格式

/表单式/

验证

.test(值) 返回的true || false

只能以英文字母开头

 var yz=/^[a-zA-Z][a-zA-Z0-9_]*$/;

验证

var res=yz.test("111");

image

正则表达式概念

1、作用 :定义字符串模板 检查字符串是否符合模板
2、怎么写正则 1// 2、new RegExp('');
test(等待验证的字符串):返回 true || false
边界符号 :^(标记符号 开始符号) $(结束)
集合 [] 多个里面的任意一个
[0-9] 0-9:范围
[可以写汉字的范围]:[\u4e00-\u9fa5]
[^a-z] :[^a-zA-Z0-9_] ^在方括号里面就是排除方括号里面的内容
量词 {} 限定词 :{2,8}最少2个最多8
* 0次或者多次:/^a*$/
+ 1次或者多次:/^a+$/
0次或者1次:/^a?$/
{n} 只能指定次数:/^bo{2}m$/ 只能2次o
{n,} 至少指定次数:/^bo{2,}m$/ 至少2
{n,m} :{2,8}最少2个最多8
| 是或的意思
()表示整体
/d 等价于[0-9]
/D 排除[^0-9]
\w:等价于[0-9a-zA-z_] 字母数字下划线
\W:等价于[^a-zA-Z0-9_] 排除数字字母下划线
\s:任何空白字符都可以使用
.除去 \n \r以外的单个字符
[.] 方括号里面的代表点
g:全局修改 var reg=/TM/g;
i:忽略大小写 var reg=/TM/gi;

创建正则

//正则创建的第一种方法
var zznumber1=/abc/;
//正则创建的第二种方法
var zznumber2=new RegExp('abc');
console.log(zznumber1);
console.log(zznumber2);

边界符号测试

//边界符号 ^
var reg1=/^abc/;//加上^只能在开头
console.log("边界符号测试:"+reg1.test("123abc"));//false
console.log("边界符号测试:"+reg1.test("abc1"));//true

//边界符号$ 结束符
var reg2=/abc$/;
console.log(reg2.test('abc'));//true
console.log(reg2.test('abca121'));//false
console.log(reg2.test('123abc'));//true

//边界符 ^ $一起使用
var reg3=/^abc$/;
console.log("边界符开始结束:"+reg3.test('abc'));//true
console.log("边界符开始结束:"+reg3.test('12abc45'));//false
console.log("边界符开始结束:"+reg3.test('abc12'));//false
console.log("边界符开始结束:"+reg3.test('21abc'));//false
console.log("边界符开始结束:"+reg3.test('abc1872abc'));//false

集合测试

//集合[] 多个里选中一个
var reg4=/[abc]/;
var reg5=/[abc]$/ //结尾是任意一个方括号里的字母
console.log("集合测试:"+reg4.test('avhg'));//true
console.log("集合测试:"+reg5.test('hja'));//true

//结尾包含a-h
var reg6=/[a-h]$/;

//结尾包含1-5的
var reg7=/[1-5]$/;

var reg8=/14[57]/;

var reg9=/^[a-zA-Z0-9_-]/ //左右限定了就只有一个字符串 没有$就是只能 a-z开头 A-Z开头 0-9开头 _ -
console.log("集合测试:"+reg9.test('$abc'));//false
console.log("集合测试:"+reg9.test('37acd'));//true
console.log("集合测试:"+reg9.test('_tty'));//true
console.log("-------------------------------");

//汉字的验证 最少2个最多8个
var zw=/^[\u4e00-\u9fa5]{2,8}$/;
console.log(zw.test("你好啊"));

var pc=/[^abc]/ //排除

var reg10=/^[^a-zA-Z0-9_]/;
console.log("排除测试:"+reg10.test('$abc'));//true
console.log("排除测试:"+reg10.test('37acd'));//false
console.log("排除测试:"+reg10.test('_tty'));//false

量词测试

var reg11=/^a*$/; //只有/^a$/只能一次   /^a*$/可以有多次a  *:0次或者多次
console.log(reg11.test('aaa'));
console.log(reg11.test('cd'));

console.log("-------------------------------");
var reg12=/^a+$/ //+:一个或者多次
console.log(reg12.test('aaa'));
console.log(reg12.test('cd'));
console.log(reg12.test('cd'));

var reg13=/^a?$/ //0次到一次
console.log(reg13.test('aaa'));
console.log(reg13.test('a'));
console.log(reg13.test('cd'));

console.log("-------------------------------");
var reg14=/^bo{2,}m$/; //o要有2个
console.log(reg14.test('bom'));
console.log(reg14.test('boom'));
console.log(reg14.test('booom'));

示例

//手机号码
var dh=/^[13|14|15|18|17][0-9][0-9]{4}[0-9]{4}/;
console.log("电话验证:"+dh.test("18908762854"));
var iphone=/^13[0-9]|15[0-9]|18[0-9]|17[0-9][0-9]{4}[0-9]{4}/;
console.log("电话验证:"+iphone.test("12309652348"));
//账号
var ac=/^[a-zA-Z][a-zA-Z0-9_]{4,15}/;
console.log("账号:"+ac.test("Xyj273"))
//密码
var pass=/^[a-zA-Z0-9_]{5,17}/;
console.log("密码:"+pass.test("xyh11212"))
//qq号
var qqac=/^[1-9][0-9]{4,9}/;
console.log("QQ账号:"+qqac.test("27828911"));

\d

// \d:等价于[0-9]
var reeg1=/^\d$/;
console.log("reeg1"+reeg1.test("8"));

\D

// \D:等价于[^0-9] 排除0-9
var reeg2=/^\D$/;
console.log("reeg2"+reeg2.test("9"));
console.log("regg2:"+reeg2.test("/"));

\w

// \w:等价于[0-9a-zA-z_] 字母数字下划线
var reeg3=/^\w$/;
console.log("reeg3:"+reeg3.test("|"));
console.log("reeg3:"+reeg3.test("a"));
console.log("reeg3:"+reeg3.test("R"));
console.log("reeg3:"+reeg3.test("0"));

\W

// \W:等价于[^a-zA-Z0-9_] 排除数字字母下划线
var reeg4=/^\W$/;
console.log("reeg4:"+reeg4.test("+"));
console.log("reeg4:"+reeg4.test("A"));
console.log("reeg4:"+reeg4.test("a"));
console.log("reeg4:"+reeg4.test(" "));

\s

// /t /r /n /f=/s 任何空白字符都可以使用/s
var reeg5=/^\s$/;
console.log("reeg5:"+reeg5.test(" "));
console.log("reeg5:"+reeg5.test("\n"));
console.log("reeg5:"+reeg5.test("\t"));
console.log("reeg5:"+reeg5.test("\r"));
console.log("reeg5:"+reeg5.test("\f"));

.

// .除去 \n \r以外的单个字符
var reeg6=/^.$/;
console.log("reeg6:"+reeg6.test(" "));
console.log("reeg6:"+reeg6.test("\n"));
console.log("reeg6:"+reeg6.test("\t"));
console.log("reeg6:"+reeg6.test("\r"));
console.log("reeg6:"+reeg6.test("\f"));
console.log("reeg6:"+reeg6.test("A"));
console.log("reeg6:"+reeg6.test("8"));
console.log("reeg6:"+reeg6.test("."));

正则表达式修改

//正则表达式修改
var t="今天TM好冷啊TM,tmd";
var reg=/TM/gi;
var ok=t.replace("今天","**");
console.log(ok);

var zz=t.replace(reg,"****");
console.log(zz);

获取匹配内容

//获取匹配的内容
var st="中国移动10086 中国电信10000 中国联通10010";
var mval=st.match(/\d{5}/g);
console.log(mval);

var d="2005-10-13";
var sz=d.match(/(\d{4})-(\d{2})-(\d{2})/);
console.log("日期:"+sz);
console.log(RegExp.$1);//年
console.log(RegExp.$2);//月
console.log(RegExp.$3);//日

var cf=`
李2021-10-13
肖2021-10-18
`
var szg=cf.match(/(\d{4})-(\d{2})-(\d{2})/g);
console.log(szg);

获取链接

var hj=`
<li class="list-item"><div class="equipment-item"><div class="prop-box"><img src="https://game.gtimg.cn/images/lol/act/img/item/1001.webp" alt="鞋子"></div> <p class="prop-name">鞋子</p> <div class="price"><i class="icon-gold"></i> <span>300</span></div></div></li>
<li class="list-item"><div class="equipment-item"><div class="prop-box"><img src="https://game.gtimg.cn/images/lol/act/img/item/1004.webp" alt="仙女护符"></div> <p class="prop-name">仙女护符</p> <div class="price"><i class="icon-gold"></i> <span>250</span></div></div></li>
`
var pic=hj.match(/https:\/\/.*\.webp/g);
console.log(pic);