一、转义符号与字符
(1)转义的概念
转义就是转换、改变意义
(2)转义符号与字符
转义符号: \
转义字符: \字符
(3)示例1
1、为什么会出错?
因为它认为是一个字符串和一个变量和一个字符串,这个变量没有用+拼接所以报语法错误
2、怎样输出中间的双引号?
加上在引号前面加上转义符号\
(4)特殊转义字符
转义符 | 功能 |
---|---|
\n | 换行 |
\r | 回车 |
\t | 制表符(tab,4个空格) |
这些符号是给编辑系统用的,所以在html里面是显示不出来的
(5)示例2
1、为什么会报错?
javascript默认不允许字符串换行
应该为:
或
把回车和换行转义成空格
二、正则基础
(1)正则的概念
英文: RegExp(regular expression)
概念: 对字符串操作的逻辑公式
作用: 按照一定的规则匹配或检索这个规则当中指定类型的某些字符
用途:
- 检测用户输入是否合法
- 替换数据中的某些字符串
- 替换模板
(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)] | 查找任何指定的选项 |
提示:
- 表达式里^表示取非
- 表达式里|表示或
- 小括号包裹优先匹配
(3)示例1
为什么987不会被匹配?
因为匹配过了就接着往下匹配,且匹配过的不会再匹配
(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
元字符可以代表中括号,一个元字符匹配一次