04-正则表达式

80 阅读2分钟

一、概述

1. 概念:

正则表达式( Regular Expression ) 是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也

是对象。

2. 作用:

  1. (验证表单)匹配
  2. 替换敏感词
  3. 提取

3. 特点

  1. 灵活性、逻辑性 功能性

  2. 用简单的方式达到字符串的复杂控制

  3. 实际开发,一般都是直接复制写好的正则表达式.

    但是要求会使用正则表达式并且根据实际情况修改正则表达

    式. 比如用户名: /^[a-z0-9_-]{3,16}$/

二、在js中的使用

正则表达式在js中以对象的形式存在

1. 创建正则表达式

1). 调用RegExp对象的构造函数创建

var 变量名 = new RegExp(/123/);

2). 利用字面量创建正则表达式

var rg = /123/;

2. 测试正则表达式 test()

用于检测字符串是否符合该规则,该对象会返回 truefalse

regexObj.test(str)

  1. regexObj 是写的正则表达式
  2. str 我们要测试的文本
  3. 就是检测str文本是否符合我们写的正则表达式规范
		var rg = /123/;	
		console.log(rg.test(123)); 	//true
		console.log(rg.test(1234)); 	//true  只要包含123都是true
		console.log(rg.test(153)); 	//flase
		console.log(rg.test('123')); 	//ture
		console.log(rg.test('abc')); 	//flase

三、 特殊字符

1. 组成

2.边界符

用来提示字符所处的位置

边界符说明
^表示匹配首行的文本(以谁开始)
$表示匹配尾行的文本(以谁结束)
  • 正则表达式里面不需要加引号 不管是数字型还是字符串型
		var rg = /abc/;	
		console.log(rg.test('abc')); 	//true
		console.log(rg.test('aabcd')); 	//true  只要包含123都是true
		var rg2 = /^abc/;		// 必须以abc开头 
		var rg3 = /^abc$/;		// 必须是abc精确匹配

3. 字符类

1). 方括号

var ref = /[abc]/; //只要包含a 或者b 或者c 都返回true

		var ref = /[abc]/;	// 只要包含a 或者b 或者c 都返回true
		console.log(ref.test('a'));	// true
		console.log(ref.test('b'));	// true
		console.log(ref.test('c'));	// true
		console.log(ref.test('aa'));	// true
		console.log(ref.test('abc'));	// true
		console.log(ref.test('azz'));	// true

var ref = /^[abc]$/; // 三选一 abc只能包括一个

		var ref = /^[abc]$/;	// 只能包含a 或者b 或者c 返回true
		console.log(ref.test('a'));	// true
		console.log(ref.test('b'));	// true
		console.log(ref.test('c'));	// true
		console.log(ref.test('aa'));	// flase
		console.log(ref.test('abc'));	// flase
		console.log(ref.test('azz'));	// flase

2). [-] 方括号内部 范围符-

var ref = /[^a-z]$/; //a 到 z 26个英文字母任何一个都可以返回 true

3). [^] 方括号内部 取反符^

var ref = /^[a-z]/; //只要包含方括号内的字符,都返回 false

方括号内部加上 ^ 表示取反

4). 字符组合

var ref = /[a-z1-9]/; //只要包含a到z 1-9 就返回true

var ref = /[a-z1-9-_]/; //只要包含a到z 1-9 - _ 就返回true

2. 量词符

设定某个模式出现的次数

var ref = /^a*$/;

var ref = /^a{3}$/;

var ref = /[a-zA-Z1-9-_]/; // 只能选1

var ref = /^[a-zA-Z0-9_-]{6,16}$]/; // 可多选6-16 且中间不能有空格

3. 括号总结

  • 大括号 { } :量词符. 里面表示重复次数

  • 中括号 [ ] : 字符集合。匹配方括号中的任意字符

  • 小括号 ( ) : 表示优先级

4. 预定义类

某些常见模式的简写方式

正则表达式测试:c.runoob.com/front-end/8…

四、替换

1. replace

现替换字符串,用来替换的参数可以是一个字符串或是一个正则表达式

		var str = 'andy和red';
		var newStr = str.replace('andy', 'baby');
		console.log(newStr);	// baby和red

stringObject.replace(regexp/substr, replacement)

  1. 第一个参数: 被替换的字符串 或者 正则表达式
  2. 第二个参数: 替换为的字符串
  3. 返回值是一个替换完毕的新字符串

2. 参数

/表达式/[switch]

switch(也称为修饰符) 按照什么样的模式来匹配. 有三种值:

  1. g: 全局匹配

  2. i: 忽略大小写

  3. gi: 全局匹配 + 忽略大小写

		var text = document.querySelector('#message');
		var btn = document.querySelector('button');
		var div = document.querySelector('div');
		btn.onclick = function() {
			div.innerHTML = text.value.replace(/激情|gay/g, '**')
		}