一、转义符号与字符

(1)转义的概念

转义就是转换、改变意义

(2)转义符号与字符

转义符号: \转义字符: \字符

(3)示例1

1、为什么会出错?

utilReplaceInResponse转义 regexp_replace 转义字符_RegExp


因为它认为是一个字符串和一个变量和一个字符串,这个变量没有用+拼接所以报语法错误2、怎样输出中间的双引号?

utilReplaceInResponse转义 regexp_replace 转义字符_元字符_02

加上在引号前面加上转义符号\

(4)特殊转义字符

转义符

功能

\n

换行

\r

回车

\t

制表符(tab,4个空格)

这些符号是给编辑系统用的,所以在html里面是显示不出来的

(5)示例2

1、为什么会报错?

utilReplaceInResponse转义 regexp_replace 转义字符_Test_03


javascript默认不允许字符串换行应该为:

utilReplaceInResponse转义 regexp_replace 转义字符_正则_04



utilReplaceInResponse转义 regexp_replace 转义字符_元字符_05


把回车和换行转义成空格

二、正则基础

(1)正则的概念

英文: RegExp(regular expression)

概念: 对字符串操作的逻辑公式

作用: 按照一定的规则匹配或检索这个规则当中指定类型的某些字符

用途:

  1. 检测用户输入是否合法
  2. 替换数据中的某些字符串
  3. 替换模板

(2)正则表达式和属性

1、正则表达式

var reg = new RegExp('test'), // 正则表达式、属性
    str = 'this is a test';

console.log(reg.test(str)) // true

以正则表达式为规则检验str里面是否包含test,包含就是true不包含就是false

要求: 字符串片段大小写默认是敏感的、连续的

2、正则属性

  • 忽略大小写:i(ignore case)
var reg = new RegExp('Test', 'i'),
    str = 'this is a test';

console.log(reg.test(str)); // true
  • 全局匹配:g(global)
var reg = new RegExp('Test', 'gi'),
    str = 'this is a test. Test is important';

console.log(str.match(reg)); // ["test", "Test"]
  • 匹配开头:^
var reg = new RegExp('^Test', 'gi'),
    str = 'this is a test. \nTest is important';

console.log(str.match(reg)); // null
  • 多行匹配:m(multi-line)
var reg = new RegExp('^Test', 'gim'),
    str = 'this is a test. \nTest is important';

console.log(str.match(reg)); // ["Test"]

(3)声明方式

1、实例化对象

var reg = new RegExp('test', 'gim')

2、字面量声明

var reg = /test/gim  // 不用写引号 不能放变量

(4)示例

var reg = /test/;

reg.a = 1;

var newReg = RegExp('test');
console.log(newReg.a); //undefined

var newReg = new RegExp('test');
console.log(newReg.a); //undefined

var newReg = new RegExp(reg);
console.log(newReg.a); //undefined

var newReg = RegExp(reg);
console.log(newReg.a); //1

没有new是拿的原来正则对象的引用

new了是拿的新的引用,生成新的正则对象

三、修饰/元字符

(1)修饰符

修饰符//正则属性

功能

i(ignore case)

忽略大小写

g(global)

全局匹配

m(multi-line)

多行匹配

(2)表达式

[]就是一个表达式,例如[123]、[abc]

[]里面放匹配字符的集合,写一个[]就匹配一位,写几个[]就连续匹配几位

表达式

描述

[abc]

查找方括号之间的任何字符

[^abc]

查找任何不在方括号之间的字符

[0-9]

查找任何从 0 至 9 的数字

[a-z]

查找任何从小写 a 到小写 z 的字符

[A-Z]

查找任何从大写 A 到大写 Z 的字符

[A-z]

查找任何从大写 A 到小写 z 的字符

0-z

查找任何从 0 至 9 的数字、从大写 a 到小写 z 的字符

0-Z

查找任何从 0 至 9 的数字、从大写 A 到小写 Z 的字符

[(red|blue|green)]

查找任何指定的选项

提示:

  1. 表达式里^表示取非
  2. 表达式里|表示或
  3. 小括号包裹优先匹配

(3)示例1

为什么987不会被匹配?

utilReplaceInResponse转义 regexp_replace 转义字符_RegExp_06


因为匹配过了就接着往下匹配,且匹配过的不会再匹配

(4)元字符

元字符: 正则使用的转义字符,一个元字符负责匹配一位

元字符

描述

·

查找单个字符,除了换行和行结束符。

\w

查找单词字符和数字[0-9A-z_]

\W

查找非单词字符和数字[^\w]

\d

查找数字[0-9]

\D

查找非数字字符[^\d]

\s

查找空白字符[\r\n\t\v\f]

\S

查找非空白字符[^\s]

\b

匹配单词边界

\B

匹配非单词边界[^\b]

(5)示例2

utilReplaceInResponse转义 regexp_replace 转义字符_正则_07


utilReplaceInResponse转义 regexp_replace 转义字符_RegExp_08


utilReplaceInResponse转义 regexp_replace 转义字符_Test_09


utilReplaceInResponse转义 regexp_replace 转义字符_正则_10


元字符可以代表中括号,一个元字符匹配一次