正则表达式

本文介绍了正则表达式的基础知识,包括如何创建正则对象、常用选项及其在字符串操作中的应用,如搜索、匹配和替换等。同时提供了邮箱验证、中文匹配等实际案例。

正则表达式

什么是正则表达式?

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

复习字符串操作:

  • 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=/\d\d/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号等。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值