正则表达式
Posted miku561
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达式
创建方法
javascript
的正则表达式有两种创建方式。两者用法一致
1, new RegExp(/123456789/)
2, /123456789/
修饰符 i,m,g
- i: 部分大小写
- m: 支持换行搜索
- g: 搜索全局匹配的内容
位置: 表达式最后。
例子:/123/g // 全局搜索内容为12的内容
三种括号 ( )、、{ }
- ( ): 使正则结构更加清晰、组成子表达式,替换时进行引用。
- { }: 重复次数。
例子:
var reg = /(12)(ab)/g // 搜索数字为 `12` 且 字母为 `ab` 的字符串 (结构清晰)
'12ab123ab'.replace(reg, "$2$1") // 结果为:ab12123ab (子表达式引用)
/a=[12]/g // 匹配 `a=1` 或者 `a=2` 的内容
/a{3}/g // 匹配3个a
/a{1,}/ // 匹配1个及以上的a
/a{1,3}/ // 匹配1个及以上, 3个及以下的a
重复匹配
重复匹配的字符是特指该字符左边仅靠的内容。
- ? : 匹配0个或1个字符
- * : 匹配0个或多个字符
- + : 匹配1个或多个字符
例子:
/https?/ // 可匹配`http`或者`https`
/ab*/ // 可匹配`a`或者`ab...`
/ab+/ // 可匹配 `ab...`
重复匹配为贪婪型匹配,也就是尽可能多的匹配。
例如:用 /ab+/
匹配字符串"abbbbbbbbbbbb" // 会全部进行匹配,若只需要ab
则需要开启懒惰型匹配。
贪婪型 | 懒惰型 |
---|---|
* | *? |
+ | +? |
使用 /ab+?/ 匹配"abcdbbbbb",结果为:ab
特殊字符
名称 | 作用 | |
---|---|---|
\w | 匹配字母和数字 | 等同于[0-9a-zA-Z] |
\W | 匹配非字母和数字 | 等同于[^0-9a-zA-Z] |
\d | 匹配数字 | 等同于[0-9] |
\D | 匹配非数字 | 等同于[^0-9] |
\s | 匹配空格、换行、退格... | 等同于[\b\r\n] (未举例完) |
\S | 匹配非空格字符 | 等同于[^\b\r\n] (未举例完) |
其他
例子:/.*(?=:)/g 匹配"https://www.baidu.com"
, 匹配结果为: https
JS中有关正则的用法
- RegExp中:
- /abc/.test(str) // str中有abc内容匹配返回true, 否则为false
- /abc/.match(str) // str中匹配abc内容,有匹配内容则返回一个数组。若无,返回null
- String中:
- str.search(/abc/) // 返回匹配到的位置。找不到返回-1
- str.replace(/abc/g, "cba") // 查找内容进行替换
- str.match(/abc/g) // 返回一个数组,与g连用。若匹配内容为空,返回null
- str.split(/abc/) // 以abc为分隔符,返回一个数组
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性