JS正则表达式光速入门

什么是正则表达式

正则表达式以前学过几次,但总是学了就忘,今天特意把所学都写下来。
正则表达式是用于匹配字符串中字符组合的模式,在JavaScript中,正则表达式是对象。
常用于检索、替换那些符合某个模式(规则)的文本,如验证表单,使之只能输入英文字母、数字以及下划线等等;还可以用来过滤页面中的一些敏感词。

正则表达式在JavaScript中的使用

创建正则表达式

可以通过两种方式创建正则表达式,要使用斜杠包起来,里面不需要加引号,不管是数字型还是字符型

  1. 通过RegExp对象的构造函数创建
var 变量名 = new RegExp(/表达式/);
  1. 通过字面量直接创建(常用)
var 变量名 = /表达式/

创建好正则表达式后,就可以使用test方法对字符串进行检验了,如

var reg = /abc/;
var str = 'abcd';
var str2 = 'zlfan';
reg.test(str);   //true
reg.test(str2);  //false

正则表达式可以由简单字符构成,如 /abc/ ,也可以是简单字符加特殊字符的组合,如 /ab*c/。其中特殊字符被称作元字符,它在正则表达式中具有特殊意义,如 ^,$,+。
下面开始学习常用特殊字符。

边界符

正则表达式边界符用来提示字符所处位置,主要有两个字符

边界符说明
^匹配以谁开始的文本
$匹配以谁结尾的文本
var reg1 = /123/;
var reg2 = /^1/;
var reg3 = /6$/;
var reg4 = /^123$/;
var num = 123456;
reg1.test(num);  //true 只要num有出现123就返回true
reg2.test(num);  //true
reg3.test(num);  //true
reg4.test(num);  //false 只匹配 123 
字符类

字符类:[ ] 表示有一系列的字符可供选择,只要匹配其中一个即可。

var reg = /[abc]/;  //只要包含有a,b,c其中一个字符就返回true
var str = 'qwera';
reg.test(str);  //true

它里面还有一个范围符 - 和取反符 ^,如

var reg = /[0-9]/;   //0-9中的一个数字
var reg = /[a-z]/;   //a-z小写英文中的一个字符
var reg = /[A-Z]/;   //A-Z大写英文中的一个字符
var reg = /[^0-9]/;  //非0-9的一个字符
var reg = /[^a-z]/;  //非a-z的一个字符
var reg = /[^A-Z]/;  //非A-Z的一个字符

注意:[ ] 里面的取反符和 边界符是同一个符号,写的时候要注意位置是否书写正确。这些范围可以和简单字符拼接在一起,
如用于匹配数字、大小写英文、连接符 - 和下划线中的一个:

var reg = /[0-9a-zA-Z-_]/;
量词符

前面学习的内容只能匹配一个字符,如果要匹配多次就要使用到量词符。用它来设定某个模式出现的次数:

量词说明
*重复0次或者多次
+重复1次或者多次
?重复0次或者1次
{n}重复n次
{n,}重复至少n次
{n,m}重复n到m次,注意花括号里面不能有空格
var reg = /a*/;		// a 出现0次或多次
var reg = /a+/;		// a 出现1次或多次
var reg = /a?/;		// a 出现0次或1次
var reg = /a{3}/;	// a 出现3次
var reg = /a{3,}/;	// a 出现3次或多次
var reg = /a{3,6}/;	// a 出现3到6次

例子:

var reg = /^a{3,6}$/;
reg.test('');					//false
reg.test('a');					//false
reg.test('aaa');				//true
reg.test('aaaa');				//true
reg.test('aaaaaaaaa');			//false

学到这里应该能看懂这条语句的意思了

var reg = /^[0-9a-zA-Z-_!]{6,18}$/;

小括号()和 或 | 的使用,注意下面的不同

var reg = /^abc{3}$/		//它只是让c出现三次
var reg = /^(abc){3}$/		//使得abc优先级提高,让abc连续出现三次
var reg = /^(a|ab){3}$/		//a 或者 ab 总共出现三次

括号的总结

  1. 小括号 表示优先级,还有分组
  2. 中括号 表示字符集合,匹配中括号中的任何字符
  3. 大括号 量词符号,表示重复的次数
预定义类

预定义类指的是某些常用模式的简写方式,如:

预定义类说明
\d匹配0-9任何数字,相当于[0-9]
\D匹配0-9以外的任何数字,相当于[^0-9]
\w匹配任意的字母、数字和下划线,相当于[0-9a-zA-Z_]
\W除字母、数字和下划线以外的任何字符,相当于[^0-9a-zA-Z_]
\s匹配空格,包括换行符、制表符空格等,相当于[\t\r\n\v\f]
\S匹配非空字符,相当于[^\t\r\n\v\f]

例子:匹配座机电话 020-12345678

var reg = /^\d{3}-\d{8}$/;
一些零碎知识

在replace()方法中使用正则表达式,表达式也有参数,表示按照什么样的模式来匹配,介绍三个常用值:

  • g 全局匹配,如果不加replace()方法只会替换第一个符合条件的
  • i 忽略大小写
  • gi 全局匹配 + 忽略大小写
var str = 'abcABC';
str.replace(/ABC/g,'abc');	//返回新字符串 'abcabc'

如果要匹配特殊符号怎么办?可以使用反斜杠,其他特殊字符同理

var reg = /abc\*/;

学习了以上知识基本上算入门了,如想掌握更加高级的用法,请点击下面的链接

MDN正则表达式







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值