加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-13 22:40:39 所属栏目:百科 来源:网络整理
导读:正则表达式 什么是正则表达式? 强大的字符串匹配处理工具。 是一种正常人很难读懂的文字。 复习字符串操作: search('字符串 ') 查找 : 返回某一字符串第一次出现的下标; 没有的话返回 -1 subatring (1,4) 获取字符串: 获取[1,4)的字符串。 之后一个参数

正则表达式

什么是正则表达式?

  • 强大的字符串匹配处理工具。
  • 是一种正常人很难读懂的文字。

复习字符串操作:

  • search('字符串 ') 查找 : 返回某一字符串第一次出现的下标; 没有的话返回 -1
  • subatring (1,4) 获取字符串: 获取[1,4)的字符串。 之后一个参数时,第二个默认为字符串长度。
  • charAt(2) 字符串 : 返回下坐标为2的字符。
  • split(‘- ’) : 将一个字符串按照'-'切成"几片" 。 之后生成并返回一个字符串数组,每个单位为一个字符串。

为什么用正则?

  简化对于字符串的操作!

正则表达式:规则表达式

  --- 把一组规则表达给计算机,让计算机来执行。

例如:

1390880230@qq.com 邮箱

www.google.com 网址

这些我们可以一眼识别出来这些,因为我们有一定的规则认知;对于计算机,同样如此。

正则能做什么?

  操作字符串。--- 唯一能做的。

例如:

var str='abcdef';
var re=new RegExp('a','i');

alert(re.text(str));

// re 为忽略大小写的,查找是否存在字符'a'的一个正则。 简写: var re=/a/i; (一般都使用简写,称作perl风格)

正则与search:

if(window.navigator.userAgent.search(/firefox/i)!=-1){//证明找到了。}

search(正则);

正则与match: //匹配,匹配出与符合正则要求的字符串。

1 var str="asd123 123 asd 2131";
2 var re=/d/g; 
3 alert(str.match(re)); 

// 这里的g是全局(global)的意思,这里会找出全部的; 否则只给出第一个。
// var re=/d+/g; + 在这里是量词:是管它前面那个的,这里指多个数字。

// var re=/dd/g; 会出现两个一起的数字。 三个的话只出现前两个。

正则与replace:(用来替换)

str.replace('a','T'); // 将字符串str中的a替换成T。但这里只会替换一个。

---使用正则: 加上一个 g 即可,会替换全部的'a'。

应用:敏感词过滤等。

var re=/你们|我们|他们/g 。

字符类:

var re=/1[abc]2/;
// == var re =/1a2| 1b2 | 1c2/;
  • []这里就是或者的意思。 --- [123 456] :或者1或者2或者3或者 或者4...
  • [1-9] 1~9中的或者 // [0-9a-z]字母或者数字。
  • [^a] : 表示除了a之外的其它所有东西。

--- 可以组合起来用。

应用:偷小说

过滤网页小说后台代码上的 标签。

var re=/<.+>/g;

// .代表任意,+代表多个任意。
// 但正则有一个特性,贪婪: 会找一个尽量大的符合的内容。

改成:

var re=/<[^<>]+>/ ;

// 含义: <后除了<>的任意多个字符,之后还有一个>的部分。

正则//中可写的东西:

转义字符:

  • d digital
  • w word [a-z0-9_] //英文,数字,下划线
  • s space 空白: 包括空格,制表符等。
  • . 代表任意

  还有大写的:

  • D 除了d的所有
  • W 除了w的所有
  • S 除了s的所有

量词: {n,m} //最少n次,最多m次、

什么是量词?

出现的次数

  • {n,m}
  • {n,} 最少n次,最多不限
  • {,m} 最少不限,最多m次
  • {n} 正好n次
  • +号: 相当于 {1,} 最少出现一次
  • *号: 不建议使用,相当于 {0,} 可以不出现,也可以出现任意次,但容易引发问题。
  • ?号: {0,1} 可以出现,也可以不出现,但出现只可以出现一次

比如:QQ的规则:

  • var re=/[1-9]d{4,10}/; 第一位为1-9,之后是4-10个任意数字。

更多实例:

校验邮箱:

  规则: 一串字母、数字、下划线 @ 一串英文或数字 .一串英文(这里有长度限制)

定义正则: var re=/w+@[0-9a-z]+.[a-z]{2,4}/; //这里注意应为.本身有含义,这里需要转义

但是,会出现问题:

我们会发现: 你好nihao@163.com 也是对的,(前面加了汉字)

再介绍一个东西:

^与$ 这里的^不出现再[]中, 其分别代表行首和行尾。

改变正则为:

var re=/^w+@[0-9a-z]+.[a-z]{2,4}$/ ;

即可。

//补充1:行首和行尾字符也可以用来去掉行首尾的空格。(中间的空格保留)

var re=/^s+/;
var re1=/s+$/; 

//var re=/^s+ | s+$/g;;

//之后使用字符串.replace(re,‘’)。 //将符合正则的替换为空

//补充2:匹配中文: 汉字在计算机中采用utf-8编码

[u4e00-u9fa5]; u代表utf8编码, 4e00是第一个汉字的utf-8编码。

//补充3:单词边界:b

这里因为需要使用变量,所以使用回最开始的定义正则方式:

定义: var re=new RegExp('b'+sClass+'b','i');

总结:

  • 字符串操作包括哪些? search substring charAt split
  • 什么是正则表达式?如何创建正则对象? 处理字符串的规则。 new 或者 //
  • 正则有几种选项? i 和 g ,一个是忽略大小写,一个是全局匹配。 当然不仅这两个。
  • search、match、replace是做什么用的? 寻找,匹配,替换。
  • 字符类[],包含哪几种情况? [abc]任意一个 [a-z]a到z [^a]除了a
  • 正则有哪些转义字符? . 任意字符 d w s 数字,字母数字下划线,所有的空白字符
  • 什么是量词?一个东西出现的次数: {n,m} ... *任意次 ?0或1次 +1次到任意次
  • 举几个正则表达式的例子,比如:邮箱、中文、QQ号等。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读