一、常用法
1、替换文本,可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字 。例如屏蔽一些骂人的特定文字等。
2、校验数据合法有效性,例如输入用户名、密码、电话号码等数据时,对其检测,看是否符合输入要求。
3、基于模式匹配从字符串中提取子字符串。
二、工作原理
通配符技术——计算机查找文件时常用。
三、js中的正则写法
1、js内置对象
var reg = new RegExp("a","i"); //RegExp-js内置对象;参数1-正则内容,具体规则;参数2-标志
2、直接量
var re = /a/i; //正则表达式的直接量
四、特殊符号
1、特殊符号包括:
! $ ^ * + = | . ? \ / ( ) [ ] { }
2、一些有特殊含义的字符。需要匹配特殊符号,需要用反斜杠(\)进行转译。
var re = /*/i; //匹配所有字符
var re = /\*/i; //对(*)进行了转译,匹配(*)
五、字符类
1、匹配一类字符。
2、内容:
\w ——ASCII单字符 [a-zA-Z0-9_]
\W ——ASCII单字符以外的字符
\s ——Unicode空白符,即空格
\S ——Unicode空白符之外的字符
\d ——数字 [0-9]
\D ——数字以外的字符
[...] ——匹配方括号中的所有字符
[^...] ——匹配非方括号中的所有字符
六、重复类
{n} ——匹配前一项n次(连续)
{n,} ——匹配前一项至少n次,至多不限
{n,m} ——匹配前前一项至少n次,至多m次
+ ——匹配前一项一次或多次(至少一次),等价于{1,},例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
? ——匹配前一项0次或1次,等价于{0,1},例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。
* ——匹配前一项0次或多次,等价于{0,},例如,zo* 能匹配 "z" 以及 "zoo"。
七、选择符
| ——两项之间的选择,例如,a|b,匹配 a 或 b 字符。
八、定位符
^ ——匹配字符串的开头。例如,^a,a要出现在字符串的开头。
$ ——匹配字符串的结尾。例如,a$,a要出现在字符串的结尾。
\b ——匹配一个单词的边界。
\B ——匹配一个非单词的边界。
九、分组
(...) ——将几个项目组合成一个单元。
(?...) ——不记忆与该组所匹配的内容。
十、标志
i ——不区分大小写。
g ——全局匹配,即所有字符串,而非在发现第一个匹配项时立即停止。
m ——多行匹配。
十一、正则表达式对象的方法
1、reg.exec(str)
执行匹配,返回一个数组。
2、reg.test(str)
测试匹配,返回一个布尔值(常用)。
十二、unicode编码常用区间
\u4e00-\u9fa5
中文。
\x00-\xff
单字节,即[^\x00-\xff]
为双字节,js不区分单字节和双字节,str.length把所有字节识别为单字节。所以判断字符串长度时要先把双字节替换成两个字节后再取长度做判断:return str.replace(/[^\x00-\xff]/g,'xx').length
。