一直使用简单的正则表达式,遇到难点的就没法简洁高效的写出正则,故此整理一篇须要记忆应用的正则使用。正则表达式
"o".repeat(3) // ooo
表示重复某个字符串指定次数reg.exec(str)方法: 方法在一个指定字符串中执行一个搜索匹配。找到返回一个结果数组或未找到 null。 返回的数组将彻底匹配成功的文本做为第一项,将正则括号里匹配成功的做为数组填充到后面数组
str.search(reg)方法: 执行正则表达式和 String对象之间的一个搜索匹配。若是匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引,不然,返回 -1。与上面的reg.test()相似可判断是否存在某个正则模式函数
str.match(reg)方法: 当一个字符串与一个正则表达式匹配时, match()方法检索匹配项。url
String.prototype.split(reg): 以指定的分隔符字符串将一个String对象分割成字符串数组, 若是分隔符是("")
则会每一个字符都切割。spa
Array.prototype.join()方法: join() 方法将一个数组(或一个类数组对象)的全部元素链接成一个字符串并返回这个字符串,不改变原数组。prototype
()
为空默认为,
当("")
是引号时则元素之间没有任何字符。这个方法经常和String.prototype.split()连用预约义类code
字符集 | 等价于 | |
---|---|---|
. | [ ^ rn ] | 除了换行和回车符以外全部字符 |
\d |
[ 0-9 ] | |
\D |
[ ^ 0-9 ] | |
\s |
[ tvnr ] | 包含制表符、空格、垂直制表符 |
\S |
[ ^ tvnr ] | |
\w |
[a-zA-Z ] | |
\W |
[ ^ a-zA-Z ] |
量词对象
重复修饰符 | 描述 | 示例 |
---|---|---|
{n} | 指定n 次 | /d{5}/数字出现5次 |
{n,} | 最少n次 | /d{5,}/数字至少出现5次 |
{n,m} | n值m次 | |
? | 最多一次,{0,1} | |
+ | 最少一次 | |
* | 任意次 |
边界字符集索引
字符 | 含义 |
---|---|
^ | 以 xxx开头 |
$ | 以 xxx结尾 |
\b |
单词边界 |
\B |
非单词边界 |
const re1 = /\d/
字面量语法 建立const re2 = new RegExp(\d)
构造函数 建立str = "It will rain tomorrow" //字符串在前 str.startWith("will") //true str.endsWith("will") //true str.includes("will") //true str.match(/\w{3,}/g) // will rain tomorrow str.search(/\w{3,}/g) // 3 //正则表达式在前 /\w{3,}/g.test(str) //true ....
g:global,全文搜索,不添加的话搜索到第一个结果中止搜索
i:ingore case,忽略大小写,默认大小写敏感
m:multiple lines,多行搜索
\D 和 \S \W
经常使用来去除不想要的\D
可用来去除不是数字的的字符ip
好比: var yourNumber = 'phoneNumber15555555555' var number.replace(/\D/,'')
\S
可用来确保必填字段中字符
var username = ' daixixi ' var value = /\S/.test(username)
各类修饰符时修饰前一个元素出现的次数
var a = "hello world2hello china".match(/\w+/)
.
匹配除了换行和回车符以外字符,能够使用[/\s\S/]
匹配全部字符/(ab)+/ 匹配至少一组连续的ab
/a|b/ 表示匹配a或b
(有个笑话就是这个|
写成中文的丨怎么都查不出。。。)/[^abc]/ 除abc之外字符
[a-z] 表示a到z 之间任意一个
[]
来构建一个简单的类,/[abc]/ 表示匹配其中任意一个都可
贪婪模式和非贪婪模式: 在设置了量词后匹配是默认是贪婪模式会即以最大的量词进行匹配,不过在量词后面加上?
后就能够取最小量词进行匹配,是否匹配结束通常取决因而否加g
'123456789'.match(/\d{3,5}/g); //["12345", "6789"] '123456789'.match(/\d{3,5}?/g); //["123", "456", "789"]
分组嵌套:
var str = '<a href="http://a.com">"网址"</a>' var reg = /href="((https?:)?\/\/.+?)"/ console.log(str.match(reg)) var url = str.match(reg)[1]
表达式 | 含义 |
---|---|
exp1(?=exp2) | 匹配后面是exp2的exp1 |
exp1(?!exp2) | <span class="Apple-tab-span" style="white-space:pre"></span>匹配后面不是exp2的exp1 |
获得是exp1的值,不过须要知足条件才会被匹配中