JavaScript RegExp课程整理



tool web

https://regexper.com/#%2F%5Cb%5Cw%7B7%2C%7D%5Cb%2F  正则可视化,并可download到本地离线使用

http://regexr.com/ reg在线测试,好用。

https://jsbin.com/qolosehipi/edit?js,console js代码在线调试

 

概述

简单来讲,reg就是按规则匹配符合条件的字符串。

通配符

零或一个
+ 一或多个
* 任意个
\b 单词边界
. 任意字符
\ 转义符

例子

匹配以http开头,.com结尾的网址 http:\/\/.+\.com
匹配yyyy-MM-dd or yyyy/MM/dd ^\d{4}[/-]\d{2}[/-]\d{2}$
使用()进行分组,例如将yyyy-MM-dd 转换为 MM/dd/yyyy   
console.log('2015-12-03'.replace(/^(\d{4})[/-](\d{2})[/-](\d{2})$/,'$2/$3/$1'))






 js RegExp对象

实例化方式
1 字面量
var reg=/\b\w{4,}\b/g
2构造函数
var reg=new RegExp("\b\w{4,}\b","g")

对象属性

属性描述FFIE
globalRegExp 对象是否具有标志 g。14
ignoreCaseRegExp 对象是否具有标志 i。14
lastIndex一个整数,标示开始下一次匹配的字符位置。14
multilineRegExp 对象是否具有标志 m。14
source正则表达式的源文本。14

构建类
表达式描述
[abc]查找方括号之间的任何字符。
[^abc]查找任何不在方括号之间的字符。
[0-9]查找任何从 0 至 9 的数字。
[a-z]查找任何从小写 a 到小写 z 的字符。
[A-Z]查找任何从大写 A 到大写 Z 的字符。
[A-z]查找任何从大写 A 到小写 z 的字符。
[adgk]查找给定集合内的任何字符。
[^adgk]查找给定集合外的任何字符。
(red|blue|green)查找任何指定的选项。
console.info('a1b3'.replace(/[ab]/g,'X'))

JS预定义类及边界
元字符
元字符描述
.查找单个字符,除了换行和行结束符。
\w查找单词字符。
\W查找非单词字符。
\d查找数字。
\D查找非数字字符。
\s查找空白字符。
\S查找非空白字符。
\b匹配单词边界。
\B匹配非单词边界。
\0查找 NUL 字符。
\n查找换行符。
\f查找换页符。
\r查找回车符。
\t查找制表符。
\v查找垂直制表符。
\xxx查找以八进制数 xxx 规定的字符。
\xdd查找以十六进制数 dd 规定的字符。
\uxxxx查找以十六进制数 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 的字符串。
贪婪模式
最大长度匹配
console.info('1245sdkc'.replace(/\d{3,4}/g,'X'))

非贪婪模式  量词后加?
console.info('1245sdkc'.replace(/\d{3,4}?/g,'X'))
分组
disp{3}只会将p匹配3次,若想匹配单词disp,则需加括号 
(disp){3}
忽略分组 

'1245sdkc'.replace(/(\d\D)(\D)/g,function(){
for(args in arguments){
console.log(arguments[args])
}
})


结果
"5sd"
"5s"//$1(\d\D)匹配的文本
"d"//$@(\D)匹配的文本
3
"1245sdkc"
若不需要捕获(\d\D)所匹配的文本,这样写 (?:\d\D)

'1245sdkc'.replace(/(?:\d\D)(\D)/g,function(){
for(args in arguments){
console.log(arguments[args])
}
})


result:

"5sd"

"d"
3
"1245sdkc"







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值