正则表达式
正则表达式就是一个表达式,用来查找一个有指定【特点】的表达式,规则匹配的。
正则表达式定义的方式
var reg = /abc/;
var reg = new RegExp('abc');
正则表达式使用方法
reg.test(str);
str.match(reg);
特殊属性 i/g/m
g
代表的是global
全局匹配i
代表ignoreCase
忽略大小写,m
代表multiline
多行匹配,
特殊字符
具有特殊含义的字符。
\
转义字符|
或
方括号
[abc] 查找方括号内的任意一个字符
[^abc] 查找任何不在方括号内的字符
[0-9] 查找0-9之间的数字
[a-z] 查找任何小写字母
[A-Z] 查找任何大写字母
[A-z] 查找任何字母
(red|blue|green) 查找指定字符串(子表达式)
元字符
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符(匹配字母、数字、下划线。等价于'[A-Za-z0-9_]')
\W 查找非单词字符
\d 查找数字
\D 查找非数字
\s 查找空白字符
\S 查找非空白字符
\b 查找单词边界
\B 查找非单词边界
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符
\v 查找垂直制表符
\uxxx 查找以十六位进制数xxxx规定的Unicode字符
[\u4e00-\u9fa5] 所有中文字符
量词
以下均遵循贪婪匹配:
n+ 匹配任何包含至少一个n的字符
n* 匹配任何包含0个或多个n的字符
n? 匹配任何0个或一个n的字符
n{X} 匹配X个n的序列字符串
n{X,Y} 匹配X至Y个n的序列字符串
n$ 匹配以n结尾的字符串
^n 匹配任何以n开头的字符串
?=n 正向肯定预查匹配任何后面紧接着指定字符串n的字符串
?!n 正向否定预查匹配任何其后没有紧接着指定字符串n的字符串
?<=n 反向肯定预查匹配任何前面紧跟着指定字符串n的字符串
?<!n 反向否定预查匹配任何前面没有紧接着指定字符串n的字符串
非贪婪匹配:
n+? n*? ...
补充
(?:n) 匹配时子表达式中没有这一项(不补获分组)
RegExp对象属性
global 查看RegExp对象是否具有g标志
ignoreCase 查看RegExp对象是否具有i标志
multiline 查看RegExp对象是否具有m标志
source 查看正则表达式源文本
lastIndex 一个整数标志开始下一次匹配的字符位置(一般与exec一起使用)
RegExp对象方法
compile 编译正则表达式。 (就是改变这个正则表达式)
exec 检索字符串中指定的值。返回找到的值,并确定其位置。
test 检索字符串中指定的值。返回 true 或 false。
字符串方法
search 检索正则表达式相匹配的值
match 查找所有符合正则匹配条件的结果
replace 替换与正则表达式匹配的字符串
split 把字符串分割成数组(注: 用字表达式分割的话会保留子表达式)
相关面试题
- 正则表达式实现aabb的形式变成bbaa
- 给10000000000三位打点 变成 10.000.000.000
- 字符串去重 aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc变成abc
- 把the-first-name转换成小驼峰式theFirstName
- 匹配结尾的数字
- 统一空格数
- 判断字符串是不是由数字构成
- 删除字符串中的空格
- 身份证号匹配
- 将字符串"select student.*,result.* from student inner join result on student.id = result.studentid" 和字符串"select * from student "中的student替换成key值