一,JavaScript转义符
转义序列 | 字符 |
---|---|
\b | 退格 |
\f | 走纸换页 |
\n | 换行 |
\r | 回车 |
\t table的缩写 | 横向跳格 ---一般等于4个空格 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
二,正则表达式
正则表达式的作用:匹配特殊字符或有特殊搭配原则的字符的最佳选择
1.正则表达式字面量创建
var reg = /abc/; 要在两个斜杠里面写
var str = "abcde" 然后reg.test(str) -->正则表达式会测验一下str里面有没有连着的abc有的话返回true
2.第二种创建方式
var reg = new RegExp("abc");-->第一个参数写规则
var str = "abcd"; 现在reg.test(str) 会返回true跟上面类似
var reg = /abc/;
var reg1 = new RegExp("reg");-->里面也可以是正则表达式,这样有new的话reg跟reg1是两个人,没new的话她两是一个人
三,正则表达式修饰符
i | 执行对大小写不敏感的匹配。 | |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 | |
m | 执行多行匹配。 |
g -->执行全局匹配
var reg = /ab/;
var str = "abababababab"; -->利用str.match(reg) -里面传正则表达式他就会把自己符合的片段挑出来,他会只返回一个 "ab";
如果是var reg = /ab/g; -->查找到一个之后他会向后继续查找他会返回所有ab
m --->执行多行匹配
var reg = /^a/g; -->加个^代表以a开头的
var str = "abcde\na"; 然后str.match(reg) 他还会返回一个a,虽然有\n但是还会认为他是连着写的
如果加个m var reg = /^a/gm;他会执行多行匹配现在就会返回两个a
两个方法1.reg.test(str)--->只能判断字符串有没有符合要求返回true或false
2.str.match(reg)-->可以把所有东西匹配出来返回给你,也可以告诉返回多少个
四,表达式的几个应用 -->表达式的^是非的意思跟上面那个不一样
表达式 | 描述 |
[abc] | 查找方括号之间的任何字符 |
[^abc] | 查找任何不在方括号之间的字符 |
[0-9] | 查找任何从0到9的数字 |
[a-z] | 查找任何从小写a到小写z的字符 |
[A-Z] | 查找任何从大写A到大写Z的字符 |
[A-z] | 查找任何从大写A到小写z的字符 |
[adgk] | 查找给定集合内的任何字符 |
[^adgk] | 查找给定集合外的任何字符 |
(red|blue|green) | 查找任何指定的选项 |在正则里面是或的意思 |
四,附一,元字符
元字符 | 描述 |
. | 查找单个字符,除了换行和行结束符 [^\r\n] |
\w | 查找单词字符 ===[0-9A-z] |
\W | 查找非单词字符 ===[^\w] |
\d | 查找数字 ===[0-9] |
\D | 查找非数字字符 ===[^\d] |
\s | 查找空白字符 ===[\t\n\r\v\f空格] |
\S | 查找非空白字符 ===[^\s] |
\b | 匹配单词边界 单词边界就是比如abc cde fgh 三个单词他有6个单词边界 |
\B | 匹配非单词边界 |
\n | 查找换行符 |
\f | 查找换页符 |
\r | 查找回车符 |
\uxxxx 范围从0000-ffff | 查找以16进制数xxxx规定的unicode字符 |
五,量词
n+ | 匹配任何包含至少一个n的字符串 |
n* | 匹配任何包含零个或多个n的字符串 |
n? | 匹配包含任何零个或一个n的字符串 |
n{X} | 匹配包含X个n的序列的字符串 |
n{X,Y} | 匹配包含X至Y个n的序列的字符串 |
n{X, } | 匹配包含至少X个n的序列的字符串 |
n$ | 匹配任何结尾为n的字符串 |
^n | 匹配任何开头为n的字符串 |
?=n 正向预查 | 匹配任何其后紧接指定字符串n的字符串 |
?!n | 匹配任何其后没有紧接指定字符串n的字符串 |
六,RegExp对象属性
global | RegExp对象是否具有标志g |
ignoreCase | RegExp对象是否具有标志i |
lastIndex | 一个整数,标示开始下一次匹配字符位置 |
multiline | RegExp对象是否具有标志m |
source | 正则表达式的源文本 -->内容 |
七,RegExp对象方法
exec reg.exec(str) reg.lastIndex会返回查找的下标,比方说var reg = /ab/g; var str = "abababab"; ,然后reg.exec(str) 会返回一个ab 和index的值(就是下标),然后lastIndex依次递加,查找完成之后会循环再次从头查找,也可以手动给lastIndex赋值 | 检索字符串中指定的值,返回找到的值,并确定其位置 |
test | 检索字符串中指定的值,返回true或false |
八,支持正则表达式的String
search str.search(reg)他会返回匹配到的位置,不管匹配多少个返回的都是第一次的位置,匹配不到会返回-1 | 检索与正则表达式相匹配的值 |
match | 找到一个或多个正则表达式的匹配 |
replace 如果不采用正则表达式 var str = "aa"; console.log(str.replace("a","b"));他只会替换一个a结果为ba var reg = /a/g; 如果采用正则console.log(str.replace(reg,"b")) 会全部替换 如果是aabb想替换为bbaa var reg =/(\w)\1(\w)\2/g; var str = "aabb"; console.log(str.replace(reg,"$2$2$1$1")); $2代表第二个子表达式的内容 还可以写成 console.log(str.replace(reg,function($,$1,$2){ 第一个参数是正则表达式全局就是reg, return $2 +$2 + $1 + $1 })) | 替换与正则表达式匹配的子串 |
split | 把字符串分割成字符串数组 |
字符串变大写srr.toUpperCase() 字符串变小写:str.toLowerCase()
九,反向引用
var str = "aaaa";
var reg = "/(\w)\1/g" -->\1引用第一个表达式匹配的内容 第一次匹配的a \1会反向引用第一个表达式的内容 \2就是反向引用第二个,var reg = "/(\w)\1\1\1/" 然后调用str.match(reg)会返回aaaa
十,贪婪匹配
var str = "aaaa";
var reg = /a+?/g; 不加?他是贪婪匹配能取多不取少,加上?能去少不取多。
var reg = /a{1,3}?/g 能取1个绝对不取3个 str.match(reg);-->返回4个单独的a,去掉问好返回“aaaa”