一、正则表达式的介绍:
1、含义:
正则表达式用来定义一个规则,是
Js
中的一个对象。
2、作用:
① 计算机可以检查一个字符串是否符合规则
② 将字符串中符合规则的内容进行提取
二、正则表达式的创建:
1、 通过构造函数创建:new RegExp(规则, 标识)
① 标识 / 匹配模式:
(1)匹配模式的数据类型:字符串
(2)匹配模式取值:
i:忽略大小写
g:全局匹配模式
var reg = new RegExp('a','i');
consoole.log(reg) // /a/i
② 使用场景:动态创建规则
③ 注意事项:
当使用转义字符(\
)的时候,需要写两个 \\
var reg = new RegExp('\\w','i');
consoole.log(reg) // /\w/i
2、 字面量创建:var 变量 = /规则/标识
var reg = /a/i ;
consoole.log(reg) // /a/i
三、正则表达式的语法:
1、 或
的表示:
① |
:表示整体的或
// 匹配ab或c或de的字符串
let reg = /ab|c|de/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true
② []
:表示字符集 – 只要有某个字符就行
// 匹配任意包含a或b或c或d的字符串
let reg = /[abcd]/;
let str = 'cd'
let result = reg.test(str)
console.log(result) // true
2、 任意的小写字母:
① [a-z]
:
// 匹配任意包含a到z之间的内容
let reg = /[a-z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // true
② /[a-z]/i
:
// 匹配任意忽略大小写的包含a到z之间的内容
let reg = /[a-z]/i;
let str = 'H'
let result = reg.test(str)
console.log(result) // true
2、 任意的大写字母:
① [A-Z]
:
// 匹配任意包含A到Z之间的内容
let reg = /[A-Z]/;
let str = 'c'
let result = reg.test(str)
console.log(result) // false
② /[A-Z]/i
:
// 匹配任意忽略大小写的包含A到Z之间的内容
let reg = /[A-Z]/i;
let str = 'c'
let result = reg.test(str)
console.log(result) // true
3、 任意字母:[a-zA-Z]
// 匹配任意字母
let reg = /[a-zA-Z]/;
let str = 'cfff'
let result = reg.test(str)
console.log(result) // true
4、任意数字:
① [0-9]
:
// 匹配任意数字
let reg = /[0-9]/;
let str = '123'
let result = reg.test(str)
console.log(result) // true
② \d
:
5、除了XXX:[^ ]
// 匹配任意除了0到9之外的内容
let reg = /[^0-9]/;
let str = '111ccc'
let result = reg.test(str)
console.log(result) // true
6、匹配除了任意的数字之外的:
① [^0-9]
:
② \D
:
7、除了换行符之外的任意字符:.
// 匹配除了换行符之外的任意字符
let reg = /./;
let str = '\n'
let result = reg.test(str)
console.log(result) // false
8、转义字符:\
// 匹配.
let reg = /\./;
let str = 'ab.c'
let result = reg.test(str)
console.log(result) // true
9、匹配任意的字母、数字、下划线:
① \w
:
② [A-z0-9_]
:
10、匹配除了任意的字母、数字、下划线之外的任意内容:
① \W
:
② [^A-z0-9_]
:
11、匹配空格:\s
12、除了空格之外的任意内容:\S
13、单词边界的任意内容:\b
14、除了单词边界之外的任意内容:\B
var reg = /\bchild\b/; // 查找child这个单词,而不是children…
四、正则表达式的方法:
1、 通过正则表达式检查一个字符串是否符合规则:
① 正则表达式.test(字符串)
:符合返回 true
// 该正则表达式用来 判断当前字符串是否含有 a
let reg = new RegExp('a', 'i');
let str = 'abc';
let result = reg.test(str);
console.log(result) // true
2、将一个字符串拆分为一个数组:字符串.split(正则表达式)
:
/** split:* - 可以将一个字符串拆分为一个数组* - 可以传一个 正则表达式 作为参数,这样会根据正则表达式去拆分字符串。* - 即使不指定全局匹配,也会全部拆分。*/var str = 'a1b2c3d4';var result = str.split(/[A-z]/); // 根据任意字母拆分字符串
3、搜索字符串中是否含有指定内容:字符串.search(正则表达式)
:
/** search:* - 可以搜索字符串中是否含有指定内容。* - 如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到,则返回 -1。* - 可以接收一个正则表达式作为参数,根据正则表达式来检索字符串。* - 只会查找第一个,即使设置了全局匹配,也没有用。*/var str = 'hello abc hello aec afc';var result = str.search(/a[bef]c/); // 结果:6
4、将符合条件的内容提取出来:字符串.match(正则表达式)
:
/** match:* - 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来。* - 默认情况下,match只会找到第一个符合要求的内容,找到以后就停止检索。* - 设置正则表达式的全局匹配模式,这样会匹配所有的内容。* - 会将匹配到的内容封装到一个数组中返回。*/var str = 'a1b2c3d4ABCD';// 提取所有的字母,并将其放在数组中。var result = str.match(/[A-z]/ig); // 结果: ['a', 'b', 'c', 'd', 'A', 'B', 'C', 'D']
5、内容替换:字符串.replace(正则表达式)
:
/** replace:* - 可以将字符串中的内容替换为指定内容。* - 需要两个参数,第一个参数是被替换的内容(可以接收一个正则表达式作为参数),第二个参数是新的内容。* - 默认只会替换第一个。*/var str = 'a1b2a3d4ABaD';var result = str.replace('a', '(●ˇ∀ˇ●)'); // 结果: '(●ˇ∀ˇ●)1b2a3d4ABaD'
五、量词:设置内容出现的次数
/** 量词:* - 通过量词可以设置一个内容出现的次数。* - 量词只对它前边的一个内容起作用。* - {n} 出现n次* - {m,n} 出现m-n次* - {m,} 出现m次以上* - + 至少出现一次,相当于{1,}* - * 出现0次或者多次,相当于{0,}* - ? 出现0次或者1次,相当于{0,1}*/var reg = /a{5}/; // 出现5次的连续的avar result = reg.test('aaaaabc'); // 结果: true
/** - ^ 表示开头* - $ 表示结尾* - ? 出现0次或者1次,相当于{0,1}*/var reg = /^a/; // 匹配开头的avar reg2 = /a$/; // 匹配结尾的a// 如果在正则表达式中同时使用^和$,则要求字符串必须完全符合正则表达式。var reg3 = /^a$/;var result = reg3.test('a'); // 结果: truevar reg4 = /^a|a$/; // 以a开头或者以a结尾
六、 常用的正则:
1、去除开头和结尾的空格:
var reg = /^\s+|\s+$/g
var str = " hell o "
str.replace(reg,"") // 结果:hell o
2、只允许输入正数(包含小数):
onkeyup="value= (value.replace(/[^.0-9]/,'').replace(/.*?(\d+\.?\d*).*/g,'$1')).replace(/^0+/,'0')"
3、只允许输入正整数:
/[^\d{1,}|\d{1,}]/g