正则表达式Regular(规则) Expression(表达式)
规定一个字符串中字符出现的规律的表达式
xxx@qq.com/cn 1
when 只要使用一个种规则,模糊匹配关键词时
how
1.最简单的正则就是关键词原文
ex: 我 我是 我shi
内容: 我 我是 我shi

2、字符集:规定字符串中某一位字符,备选字符列表 只有一个字符,但是有多重选择字符
语法:[备选字符列表]
每个字符集只能匹配一位字符,且每个字符集中至少匹配一次
ex:[微wv][信x]
匹配到的内容: 微信 wx vx 微x v信 w信
ex:[Qq][Qq]
匹配到的内容:Qq qq QQ qQ
简写:
1.如果备选字符列表是连续的,可用-省略中间字符
一位数字:[0123456789] ==>[0-9]
ex:[0-9] [2-8] [1-1]
内容:0123 567 11111
一位小写字母:[a-z]
一位大写字母:[A-Z]
一位字母:[a-zA-Z]
一位汉字:[\u4e00-\u9fa5]
特殊:除了xx以外[^xx]^必须写在正则的开头
预定义字符集:对常用字符集的简写
\w 一位字母数字或_ [0-9a-zA-Z_]
\d 一位数字 [0-9] digital(数位)
\s 一位空字符 一切看不见的字符:空格,Tab ,回车..
ex:(三个空格) aaa
内容(三个空格) aaa
. 一位任意字符
一个预定义字符集仅匹配一位字符,仅用于规定字符的内容
量词:专门规定一位字符集出现次数的规则,量词都是用于一个字符集只有默认修辞相邻的前一个字符集,量词需要用在字符后面
1、有明确数量的边界
字符集{min,max} 规定字符集出现最少min次,最多max次
ex:
字符集{min,} 最少出现min次
字符集{n} 必须出现n次
2、没有明确数量的边界
字符集? 可有可无,最多出现一次
字符集* 可有可无,多了不限
字符集+ {1,} 至少出现一个,多了不限
仅修辞相邻的前一个字符集
选择和分组
分组:将多个字符集组成一组 可以让一个量词修饰多个字符集
ex: (字符集){}
选择:"或" 匹配任意一个规则即可
ex: 规则1|规则2 (微|w(ei)?)(信|x(in)?)
匹配指定位置
字符串的开头 ^ ex: ^\s+ 开头的空字符
字符串结尾 $ ex: \s+$ 结尾的空字符
单词边界 \b ex: \bno\b 匹配no这个单词,但是前和后可以用标点或者空格和其他字符隔开

手机号
(\+86|0086)? +86或0086
\s* 空字符,可有可无,多了不限制
1
[3457869] 3,4,5,6,7,8,9中挑一个
\d{9} 9位数字
(\+86|0086)?\s*1[3456789]\d{9} 正则中间不要加空格,容易被解析成规则 +前加上\否则会被解析成量词
邮箱
数字/字母或_ 一次以上 \w+
@
字母或数字 2位以上 [0-9a-zA-Z]{2,}
(. 和 (字母或数字) 2-3位) 1-2次

// 检索关键词 查找出字符串中包含的敏感词的位置或者内容 4种
// 1、查找一个固定的关键词出现的位置 只找第一次出现的位置
// var i = str.indexOf("关键词"); 查找的是第一次出现的位置,如果没找到返回-1 省略第二参数,默认从0开始查找
// 关键词严格区分大小写
var str = "good good study , day day up";
// 0123456789012345678901234567
var i = str.indexOf("day");
console.log(i);
//var i = str.indexOf("关键词",fromi); 从指定位置开始找下一个
i = str.indexOf("day",i+1);
console.log(i);

i = str.indexOf("very");
console.log(i);

str = "no zuo no die No can no bibi";
//循环变量
var i = -1;
// 反复:通过给变i的值,查找str中包含no关键词的位置
while((i=str.indexOf("no",i+1))!=-1){
console.log('在位置'+i+"发现敏感词");
}
// var i = str.lastIndexOf("关键词",fromi) 用法和indexOf相同,但是从后往前查找
console.log(str.lastIndexOf("no"));
// 问题:只能找一个关键词
// 解决:正则表达式
// 2、判断字符串中是否包含了符合规范的敏感词
// var i = str.search(/正则/)
// 在str中查找第一个符合正则表达式要求的关键词的位置
// 返回值:找到的关键词的下标,如果找不到返回-1
// 发送消息是,只要包括了 "微信"就不让发送

<ul id="ulname">
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
<li>five</li>
</ul>

<script type="text/javascript">
// 检索关键词 查找出字符串中包含的敏感词的位置或者内容 4种
// 1、查找一个固定的关键词出现的位置 只找第一次出现的位置
// var i = str.indexOf("关键词"); 查找的是第一次出现的位置,如果没找到返回-1 省略第二参数,默认从0开始查找
// 关键词严格区分大小写
var str = "good good study , day day up";
// 0123456789012345678901234567
var i = str.indexOf("day");
console.log(i);//18
//var i = str.indexOf("关键词",fromi); 从指定位置开始找下一个
i = str.indexOf("day",i+1);
console.log(i);//22

i = str.indexOf("very");
console.log(i);//-1没找到

str = "no zuo no die No can no bibi";
//循环变量
var i = -1;
// 反复:通过改变i的值,查找str中包含no关键词的位置
while((i=str.indexOf("no",i+1))!=-1){
console.log('在位置'+i+"发现敏感词");
}
// var i = str.lastIndexOf("关键词",fromi) 用法和indexOf相同,但是从后往前查找
console.log(str.lastIndexOf("no"));
//替换:讲字符串找那个的所有敏感词替换成新的内容,不修改原字符串的权限,要
//用变量接收
var str = 'no zuo no die no can No bb';
//查找:search。在str中查找第一个符合表达式要求的关键字,找到了返回下标,
//没找到返回-1,
console.log(str.search(/no/i));
//match:找到一个内容,保存在一个数组里面。
console.log(str.match(/no/ig));
//replace,替换,ig表示不区分大小写和全局。后面的为所替换的字
str = str.replace(/no/ig,'bu');
console.log(str);

//根据不同类型的敏感词,动态替换不同新值。
//替换 我去 卧槽 我去去
var msg = '什么?女神约我去吃饭?卧槽!真的?那我去去就来。'
msg = msg.replace(/[我卧][槽去][去]?/ig,
//kw为本次找到的关键字,return 根据关键字替换出来的新字
function(kw){
return kw.length == 2?'**':'***';
}
)
console.log(msg)

//删除字符串开头和结尾的空格
var asd = ' q w e r ';
asd = asd.replace(/^\s+|\s+$/ig,'')
console.log(asd);

//切割:spilt 切割后多个字符串组成数组
var pid = '421181199712090432';
var chars = pid.split('');
console.log(chars);
var mail = '313558147@qq.com';
var arr = mail.split(/@/);
//切割后分为两个数组
var arr1 = arr[0];
var arr2 = arr[1];
console.log(arr,arr1,arr2);

function ulname(){
/*//1.后的ulname元素中html内容 innerHTML,保存到html中
var html = document.getElementById('ulname').innerHTML;
console.log(html);
//2.删除html开头的空字符<li>和结尾的</li>空字符
html = html.replace(/^\s*<li>|<\/li>\s*$/g,'');
console.log(html);
//3.按照</li>空字符<li>切割html 保存到一个names数组中
var names = html.split(/<\/li>\s*<li>/g);
console.log(names);
//4.对数组名字进行排序
names.sort();
console.log(names);
//5.按照拆分的格式,进行还原
html = '<li>' + names.join('</li><li>') + '</li>';
console.log(html);
//6.将html写入到ulname元素中去
document.getElementById('ulname').innerHTML = html;*/
document.getElementById('ulname').innerHTML = '<li>' + document.getElementById('ulname').innerHTML.replace(/^\s*<li>|<\/li>\s*$/g,'').split(/<\/li>\s*<li>/g).sort().join('</li><li>') + '</li>';
}
ulname()

//将这六行携程一行代码。

转载于:https://www.cnblogs.com/awei313558147/p/11302403.html

2019.7.31正则相关推荐

  1. AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会【IT新未来: 5G与人工智能】内容概要

    AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会[IT新未来: 5G与人工智能]内容概要 导读 5G+AI双核启动会更加珠联璧合.相得益彰. IOT 采集数据 → Deel Learn ...

  2. [2019.7.31~2019.8.15]纪中集训游记

    开坑 这是一篇(也许会变成一套)无聊的游记. https://jzoj.net/senior/ Day0(2019.7.31) 启程 如果没记错的话,与同学们相约在机场的时间应该是9:00,然而我10 ...

  3. 2019.12.31大一练习赛

    2019.12.31大一练习赛 寒假培训第一天,老师认为我们题做得太快了,于是晚上搞了一场练习赛. 第1题 QWQ和QAQ Description QWQ的朋友QAQ开了一个A工厂,但QAQ不是一个很 ...

  4. 【小故事大智慧】学习,何为会与不会?------记2019.12.31与郭老师和米老师的聊天

    今天给大家分享一下,我与男神女神之间的小故事,小故事大智慧呦,希望大家可以共勉! 这样吧,先拿出我的杀手锏,给大家出两道小学二年级的乘法题好啦,注意呦,这可是男神出的,要重视啊,重视啊,重视哈---- ...

  5. 985大学计算机2019国家线,31所985大学公布考研复试分数线,2019年国家线预计会上涨!...

    原标题:31所985大学公布考研复试分数线,2019年国家线预计会上涨! 我国的34所985大学,都是为考研自主划线高校,从已经公布的31所自主划线高校,也就是31所985大学的考研复试线来看,不难发 ...

  6. 学习手记(2019/7/05~2019/8/31)——快乐暑假

    文章目录 二分答案的作用 堆和区间 很糙ddp 线段树合并 网络流结论の1 树上莫队 对角线与GCD 区间与扫描线与方案数 欧拉欧拉*1 斯坦纳树 切比雪夫距离 二分匹配结论の1 min-max容斥 ...

  7. 2019.8.1正则二

    预习 //去除str中的字母 var str = '1sss2aaa3sdsdf4sf5sd622'; str = str.replace(/[a-z]*/g,''); console.log(str ...

  8. 【每日早报】2019/12/31

    ✦ 人人全新App公测,正式回归社交市场 ✦ 小米电视宣布已提前完成2019年中国市场1000万台销量目标 ✦ 京喜宣布"京喜年货节"正式开启,发布"超级百亿补贴&quo ...

  9. 【每日早报】2019/07/31

    今日看点 ✦ 微信公众号后台更新,增加"常读用户分析"数据分析功能 ✦ 小红书回应被多家安卓应用商店下架:正在与相关部门积极沟通解决 ✦ 京东拼购升级招商政策,即将接入微信一级入口 ...

最新文章

  1. c语言中副作用和顺序点的理解
  2. shell实例第12讲:给定目录找出包含关键字的文件
  3. TensorFlow实现人脸检测和人脸识别
  4. Java项目中如何更优雅的处理空值?
  5. JavaSE(十七)——IO流之字节流
  6. 湖南高工计算机考试,湖南一工教育
  7. `object.__init__`
  8. Pandas 文本数据方法 wrap( )
  9. js 開始时间,当前时间,结束时间的比較
  10. OpenGL学习笔记_简介_环境配置_创建一个窗口实例
  11. python读取目录里所有txt文件转excel
  12. 詹克团反攻比特大陆:一场失去人心的自我挽留
  13. php实现推箱子游戏,C语言实现推箱子游戏的代码示例
  14. 别做正常的傻瓜-读后感
  15. apk编辑器制作共存失败的一个可能的原因(第一次手动制作的教训)
  16. 背景扣除matlab_基于背景减法的目标检测在Matlab中的实现方法
  17. html5css游戏,HTML5/CSS3 迷你赛车游戏
  18. 信任别人计算机和网络,【媒库文选】人们可能更信任计算机而不是人类
  19. 系列文章|闲鱼商品理解之精品库建设
  20. 【FAQ】软件保护系统Themida常见问题集锦(二)—“Taggant信息”功能的用途是什么?...

热门文章

  1. 阿里一面,说说你对Mysql死锁的理解
  2. 如何保证http传输安全性
  3. 我对正向代理和反向代理的理解
  4. 面试官十大常问面试问题总结
  5. AR识别卡制作工具 1.0终于完工了
  6. linux 和 windows usb插拔侦测
  7. 简洁的c++http协议获取内容(二)--获取服务器图片
  8. tensorflow线性回归基础函数
  9. webrtc 和 rtp 协议
  10. Ubuntu系统下ntp服务器搭建