资讯专栏INFORMATION COLUMN

javascript 正则的一些使用场景——敏感词过滤

kun_jian / 2545人阅读

摘要:正则不是必须的,任何东西我们都可以不用正则用其他方式实现。正则中的转义寻找第一个出现的数字正则中的转义代表数字索引数字出现在索引的位置只能找到字母出现的索引位置。所以我们就需要写一个过滤标签的方法。点代表任意字符,在正则里劲量不要用。

写一个最简单的正则
// var re=new RegExp("a");//js风格
var re=/a/;//perl风格,古老语言现在没人用了
// var re2=new RegExp("o");
var re2=/o/;
var str="hello world!";
console.log(str.search(re));//-1
console.log(str.search(re2));//4
用i写一个忽略大小写的正则
// var re=new RegExp("h","i");//用i忽略大小写i===ignore
var re=/h/i;
var str="Hello world!";
console.log(str.search(re));//0,上面忽略h大小写,可以找到第0个元素

像上面这种找个o找个h,不用正则也一样简单。正则不是必须的,任何东西我们都可以不用正则用其他方式实现。
下面我们做一些利用正则可以更简单的实现的功能。

正则中的转义d寻找第一个出现的数字
// 正则中的转义  d 代表数字
var str="abc 55 fgdf56 56";
var re=/d/;
console.log(str.search(re));//索引4 数字5出现在索引4的位置

search只能找到字母出现的索引位置。match把所有匹配的东西,全部提取出来

用g写一个获取全部符合要求的正则,利用match把所有匹配的内容展示出来
var str="asdf 66 5649 sdf546";
// 找到第一个数字
var re=/d/;
console.log(str.match(re));//["6", index: 5, input: "asdf 66 5649 sdf546", groups: undefined]
// g找到全部的数字g===global代表找到全部
var re2=/d/g;//一个d表示要一个数字
console.log(str.match(re2));//["6", "6", "5", "6", "4", "9", "5", "4", "6"]
用+标识获取若干个,下面例子中是若干个数字

+量词,代表若干(多少都可以)

// +量词,代表若干(多少都可以)
var str="asdf 66 5649 sdf546";
var re3=/d+/g;//一个d表示要一个数字,加上+代表要若干数字
console.log(str.match(re3));//["66", "5649", "546"]
敏感词过滤



  敏感词过滤


  

  

.代表任意字符
var str="asdf 66 5649 sdf546 +-*/.";
var re=/./g;
console.log(str.match(re));// ["a", "s", "d", "f", " ", "6", "6", " ", "5", "6", "4", "9", " ", "s", "d", "f", "5", "4", "6", " ", "+", "-", "*", "/", "."]
元字符或者叫方括号[]

[]代表或里面内容任选一个都行。

1、任意字符
[abc]pc
代表apc bpc cpc都符合要求,如果写成其他形式就不符合要求。

var str="apc bpc cpc dpc epc fpc";
var re=/[abc]pc/g;//g代表全部符合要求的
console.log(str.match(re));//["apc", "bpc", "cpc"]

2、范围

// 找出a-z的字母和0-9的数字
var str="asdf 66 5649 sdf546";
var re2=/[a-z]/g;
console.log(str.match(re2));//["a", "s", "d", "f", "s", "d", "f"]
var re=/[0-9]/g;//找出所有0-9的数字
console.log(str.match(re));//["6", "6", "5", "6", "4", "9", "5", "4", "6"]

3、排除

// 排除a-z
var str="asdf 66 5649 sdf546 +-*/.";
var re=/[^a-z]/g;
console.log(str.match(re));//[" ", "6", "6", " ", "5", "6", "4", "9", " ", "5", "4", "6", " ", "+", "-", "*", "/", "."]
// 排除a-z和0-9
var str="asdf 66 5649 sdf546 +-*/.";
var re=/[^a-z0-9]/g;
console.log(str.match(re));//[" ", " ", " ", " ", "+", "-", "*", "/", "."]

像小说网站,我们不可能一部一部小说录进去,我们把别人网站的小说扒过来。
一般采集的小说都会包含html标签,这时候我们就需要把小说变成纯文本的。所以我们就需要写一个过滤html标签的方法。

过滤html标签的、模拟采集器处理成文本


  
    
    过滤html标签模拟采集器处理成文本
    
  
  
    

正则中的转义

d 代表数字。就是[0-9]
w 代表英文、数字、下划线。就是[a-z0-9_]
s 代表空白字符,包括空格、tab等不可打印的字符
D 代表除了0-9意外的东西。就是1
W 代表除了a-z,0-9和下划线意外的东西。就是2
S 代表非空白字符。
. 点代表任意字符,在正则里劲量不要用。

量词——代表个数

{n} 代表正好出现n次——写一个正则标识8位的固定电话号码/[1-9]d{7}/ ——第一位1-9后面7位是数字。

{n,m} 代表最少出现n次,最多出现m次——比如写个qq号(5-11位)——

/[1-9]d{4,10}/ 第一位1-9,后面是4位到10位的数字

{n,} 代表最少n次最多不限。

+==={1,}标识最少出现一次,最多不限

?==={0,1} 代表最少0次最多1次——固定电话的区号可以出现也可以不出现——/(0d{2-3}-)?[1-9]d{7}(-d{1,5})?/代表第一位是0然后后面是2到3位数字,然后书面是-,?标识前面可有可无,后面部分代表分机号。

*==={0,} 代表最少0个最多不限,可以没有也可以有很多位。不常用。

  • 0-9 ↩

  • a-z0-9_ ↩

  • 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/97114.html

    相关文章

    • 敏感检测算法小结

      摘要:序本文简单介绍下敏感词或者脏词检测算法。经典算法经典的算法由三部分构成,表,表和表,共包含四种具体的算法,分别是计算三张查找表的算法以及算法本身。表是由模式集合中的所有模式构成的状态转移自动机。 序 本文简单介绍下敏感词或者脏词检测算法。 经典AC算法 经典的AC算法由三部分构成,goto表,fail表和output表,共包含四种具体的算法,分别是计算三张查找表的算法以及AC算法本身。...

      刘厚水 评论0 收藏0
    • JS基础入门篇(三十三)—正则表达式

      摘要:举例一使用这个正则,打印结果为使用这个正则,打印结果为举例二打印结果如下过滤标签你好美丽的上海想转化成你好,美丽的上海如果后面加,就会进入非贪婪模式。如果后面不加,就会进入贪婪模式,结果为上海。你好美丽的上海。 1.创建一个正则表达式 方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成。 var reg1 = /a/; var reg2 = /ab+c/; 方法二:调用Re...

      caspar 评论0 收藏0
    • JS基础入门篇(三十三)—正则表达式

      摘要:举例一使用这个正则,打印结果为使用这个正则,打印结果为举例二打印结果如下过滤标签你好美丽的上海想转化成你好,美丽的上海如果后面加,就会进入非贪婪模式。如果后面不加,就会进入贪婪模式,结果为上海。你好美丽的上海。 1.创建一个正则表达式 方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成。 var reg1 = /a/; var reg2 = /ab+c/; 方法二:调用Re...

      hot_pot_Leo 评论0 收藏0
    • JS基础入门篇(三十三)—正则表达式

      摘要:举例一使用这个正则,打印结果为使用这个正则,打印结果为举例二打印结果如下过滤标签你好美丽的上海想转化成你好,美丽的上海如果后面加,就会进入非贪婪模式。如果后面不加,就会进入贪婪模式,结果为上海。你好美丽的上海。 1.创建一个正则表达式 方法一:使用一个正则表达式字面量,其由包含在斜杠之间的模式组成。 var reg1 = /a/; var reg2 = /ab+c/; 方法二:调用Re...

      y1chuan 评论0 收藏0
    • Spring Boot项目实践之问答社区

      摘要:异步事件处理本项目涉及到多种异步事件的处理。即是的粉丝,是的关注对象。模式定义优缺点推事件触发后广播给所有粉丝。具体来说,推模式就是事件触发后产生,触发事件的用户下所有粉丝的实现中都存入该的。 项目源代码已托管在 Github,欢迎 Star、Fork。 Q & A 问答社区 QA 是一个基于 B/S 架构而设计开发的社区网站。 showImg(https://segmentfault...

      binaryTree 评论0 收藏0

    发表评论

    0条评论

    最新活动
    阅读需要支付1元查看
    <