JavaScript 内容总结
1.正则表达式概述
用于匹配字符串中字符组合的模式,在javascript中,正则表达式也是对象
正则表通常用来检索、替换那些符合某个模式(规则的文本)
例如:验证表单(匹配)、过滤页面敏感词(替换)、获取特定部分(提取)
特点:灵活性、逻辑性、功能性非常强,可以迅速地用极简单的方式达到字符串的复杂控制
2.正则在js里的使用
创建正则表达式
-
通过RegExp对象的构造函数创建
var 变量名 = new RegExp(/表达式/);
-
通过字面量创建
var 变量名 = /表达式/;
测试正则表达式 test
test() 正则对象方法,用于检测字符串是否符合该规则,该对象返回true或false,其参数是测试字符串
regexObj.test(str);//返回 true 或 false
- regexObj 是写的正则表达式
- str 我们要测试的文本
- 就是检测str文本是否符合我们写的正则表达式规范
3.正则中的特殊字符
-
边界符
边界符 说明 ^ 表示匹配行首的文本(以谁开始) $ 表示匹配行尾的文本(以谁结束) var reg = /abc/; console.log(reg.test('abc'));//true console.log(reg.test('ab'));//false console.log(reg.test('abcsdgv'));//true var reg = /^abc/; console.log(reg.test('abc'));//true console.log(reg.test('abccvh'));//true console.log(reg.test('abddc'));//false var reg = /^abc$/; console.log(reg.test('abc'));//true console.log(reg.test('aaabc'));//false console.log(reg.test('abcnnnabc'));//false
-
字符类:[],表示有一系列字符可供选择,只要匹配其中一个就可以了
var reg = /[abc]/ console.log(reg.test('andy'));//true console.log(reg.test('dddd'));//false var reg = /^[abc]/;//只能是a或b或c开头 console.log(reg.test('abc'));//true console.log(reg.test('andy'));//true console.log(reg.test('dabc'));//false var reg = /^[abc]$/;//三选一 console.log(reg.test('abc'));//false console.log(reg.test('andy'));//false console.log(reg.test('dabc'));//false console.log(reg.test('c'));//true console.log(reg.test('a'));//true console.log(reg.test('bb'));//false var reg = /^[a-z]$/;//三选一 console.log(reg.test('a'));//true console.log(reg.test('z'));//true console.log(reg.test('dabc'));//false console.log(reg.test('c'));//true var reg = /^[a-zA-Z0-9]$/;//任选其一 console.log(reg.test('a'));//true console.log(reg.test('A'));//true console.log(reg.test('9'));//true var reg = /^[^a-zA-Z0-9]$/;//取反 console.log(reg.test('a'));//false console.log(reg.test('A'));//false console.log(reg.test('9'));//false
-
量词符:设定某个模式出现的次数
量词 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n次到m次 var reg = /^a$/ console.log(reg.test('a'));//true console.log(reg.test('aba'));//false var reg = /^a*$/ console.log(reg.test('a'));//true console.log(reg.test('aaa'));//true var reg = /^a+$/ console.log(reg.test('bc'));//false console.log(reg.test('a'));//true console.log(reg.test('aaa'));//true var reg = /^a?$/ console.log(reg.test('bc'));//false console.log(reg.test('a'));//true console.log(reg.test('aaa'));//false var reg = /^a{2}$/ console.log(reg.test('bc'));//false console.log(reg.test('a'));//false console.log(reg.test('aa'));//true console.log(reg.test('aaa'));//false var reg = /^a{2,}$/ console.log(reg.test('bc'));//false console.log(reg.test('a'));//false console.log(reg.test('aaaaa'));//true var reg = /^a{2,3}$/ console.log(reg.test('bc'));//false console.log(reg.test('a'));//false console.log(reg.test('aaa'));//true console.log(reg.test('aaaaa'));//false
-
小括号表示优先级
var reg = /^abc{2}$/ console.log(reg.test('aabbcc'));//false console.log(reg.test('abcc'));//true var reg = /^(abc){2}$/ console.log(reg.test('abcabc'));//true console.log(reg.test('abcc'));//flase
-
预定义类:某些常见模式的简写方式
预定义类 说明 \d 匹配0-9之间的任一数字,相当于[0-9] \D 匹配所有0-9以外的字符,相当于[ ^0-9] \w 匹配任意字母、数字和下划线,相当于[A-Za-z0-9_] \W 匹配除字母、数字和下划线以外的字符,相当于[ ^A-Za-z0-9_] \s 匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f] \S 匹配非空格字符,相当于[ ^\t\r\n\v\f] //座机号码:010-12345678、0530-1234567 // 或 | var reg = /^\d{3}-\d{8}|\d{4}-\d{7}$/ console.log(reg.test('010-12345678')); console.log(reg.test('0530-1234567'));
4.正则表达式中的替换
replace 替换
//语法:stringOnject.replace(regExp/substr,replacement)
var str = 'andy和red和andy'
var newstr = str.replace(/andy/, 'baby')
console.log(newstr);//baby和red和andy
- 第一个参数:被替换的字符串 或者 正则表达式
- 第二个参数:替换为的字符串
- 返回值是一个替换完毕的新字符串
正则表达式参数
//语法:/表达式/[switch]
var str = 'andy和red和andy'
var newstr = str.replace(/andy/g, 'baby')
console.log(newstr);//baby和red和baby
switch(也称为修饰符)按照什么样的模式来匹配,有三种值:
- g:全局匹配
- i :忽略大小写
- gi:全局匹配+忽略大小写