正则表达式
通常被用来检索、替换那些符合某个模式(规则)的文本。在表单中,用于校验数据;在爬虫中,用于数据采集。
编写正则:
- 创建正则对象:/原子和元字符/模式修正符
定界符:/.../
除了字母、数字和反斜线\以外的任何字符都可以为定界符号,比如 | |、//、{}、!!等等,但是需要注意,如果没有特殊需要,我们都使用正斜线//作为正则表达式的定界符号。 正则表达式的原子和元字符都放在定界符之间,而模式修正符放在定界符之外。
JS风格: new RegExp()
perl风格: /\d+/
转义:
" \ "转义字符可以将有意义的字符转成没意义的字符,还可以将没意义的字符转为有意义的字符。如:\d表示任意一个十进制的数字。
代表范围的原子 | 说明 | 自定义原子表示法 |
\d | 表示任意一个十进制的数字 | [0-9] |
\D | 表示任意一个除数字这外的字符 | [^0-9] |
\s | 表示任意一个空白字符,空格、\n\r\t\f | [\n\r\t\f ] |
\S | 表示任意一个非空白 | [^\n\r\t\f ] |
\w | 表示任意一个字 a-zA-Z0-9_ | [a-zA-Z0-9_] |
\W | 表示任意一个非字,除了a-zA-Z0-9_以外的任意一个字符 | [^a-zA-Z0-9_] |
--------------------------------------------------------------------------------
元字符
1.或
/a[abc]s/ 可匹配aas 或 abs 或 acs
2.范围
[a-z]
[0-9] \d
[a-z0-9]
3.排除
[^abc]----排除abc
[^0-9]---排除0-9数字
--------------------------------------------------------------------------------
量词
如果不加量词,就是一个
{n}-----n个
{n,m}-----最少n个,最多m个
{n,}--------最少n个,最多不限
{0,m}-----最少0个,最多m个
+ -----最少1个,最多不限,相当于 {1,}
* -----最少0个,最多不限,相当于{0,}
? ------最少0个,最多1个,相当于 {0,1}
https?://--------s可有可无
--------------------------------------------------------------------------------
谓语(修饰符)
^ 行首
$ 行尾
--------------------------------------------------------------------------------
选项:
i Ignore 忽略大小写
g Global 全局匹配
m multi-line 多行模式
单行模式(默认) ^$指的是整个字符串的开头和结尾;不会识别字符串里面的换行
多行模式(m) ^$指的是每一行的开头和结尾;识别字符串中的\n
let re=/^/m;
search 类似于indexOf,是位置----str.search(re)
match 匹配——结果数组----str.match(re)
replace 替换----str.replace(re)
re.test(str) => bool
--------------------------------------------------------------------------------
举例:
手机号
1.11位数字
2.13x/150/158/170/172开头
或 |
/^(13\d|15[08]|17[0-4])\d{8}$/
--------------------------------------------------------------------------------
邮箱
aaa @ aaa.com
1.用户名:数字、字母、下划线,最多64位
\w等价于[a-z0-9_]
\w{1,64}
2.网址:英文、数字、中划线
[a-z0-9\-]{1,256}
3.后缀:(.英文2~6位) 1~2个
(\.[a-z]{2,6}){1,2}
/^\w{1,64}@[a-z0-9\-]{1,256}(\.[a-z]{2,6}){1,2}$/i
--------------------------------------------------------------------------------
用户名
(数字、字母、下划线)8~32位
/^\w{8,32}$/
--------------------------------------------------------------------------------
身份证验证
15位或者18位身份证
d{18}|d{15}
--------------------------------------------------------------------------------
非法字符验证
非法字符如:< > & / ' |
[^<>&/|'\]+
--------------------------------------------------------------------------------
日期验证
匹配形式如:20030718,030718
范围:1900--2099
正则表达式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}
--------------------------------------------------------------------------------
匹配中文字符
[\u4e00-\u9fa5]