正则表达式

正则表达式

正则表达式就是一个表达式,用来查找一个有指定【特点】的表达式,规则匹配的。

正则表达式定义的方式

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           把字符串分割成数组(注: 用字表达式分割的话会保留子表达式)

相关面试题

  1. 正则表达式实现aabb的形式变成bbaa
 var str = 'aabb';
var reg = /(\w)\1(\w)\2/
var str2 = str.replace(reg,function($,$1,$2){
    return $2 + $2 +$1 +$1
})
console.log(str2)
  1. 给10000000000三位打点 变成 10.000.000.000
var str = '10000000000'
var reg = /(?=(\B)(\d{3})+$)/g;
console.log(str.replace(reg,'.'))
  1. 字符串去重 aaaaaaaaaaaaaaaaaaaaaabbbbbbbbcccccccccc变成abc
  2. 把the-first-name转换成小驼峰式theFirstName
  3. 匹配结尾的数字
var str = 'ashjl1234'
var reg = /\d$/
console.log(str.match(reg))
  1. 统一空格数
  2. 判断字符串是不是由数字构成
var str = 'ashjl1234'
var reg = /^\d+$/
console.log(str.test(reg))
  1. 删除字符串中的空格
         var reg = /^\s+|\s+$/g;
         console.log(str.replace(reg, ''))
         console.log(str.trim())
         var reg = /\B/g
         console.log(str.match(reg))
  1. 身份证号匹配
var reg = /^\d{17}[0-9X]$/i
console.log(str.match(reg))
  1. 将字符串"select student.*,result.* from student inner join result on student.id = result.studentid" 和字符串"select * from student "中的student替换成key值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值