美文网首页
正则表达式入门

正则表达式入门

作者: 吉他手_c156 | 来源:发表于2020-04-14 16:30 被阅读0次

匹配 以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字,例如:029-88888888

简单粗暴版:
0\d\d-\d\d\d\d\d\d\d\d
\d:匹配一个数字等价于 [0-9]
优雅版:
0\d{2}-\d{8}
\d 后面的{2},{8} 表示前面的 \d 必须连续匹配 2次 ,8次

匹配以字母 x 开头,中间是数字,字母,下滑线组成的字符串

\bx\w*\b
或
\bx\w+\b
\b 匹配一个单词的边界,也就是指单词和空格之间的位置。例如:abc\b 可以匹配aabc中的abc,不能匹配abca中的abc
这里的 \w* 和 \w+,* 和 + 都是类似的元字符,不同是的 * 匹配重复次数为 0-任意次,+ 匹配的 1-任意次

匹配 6-10 位数组字母下滑线字符串,第一位必须为字母

^[a-zA-Z]\w{5,9}$
元字符 ^ 和 $ 都表示匹配一个位置,这个和 \b 有点类似,^ 匹配一个字符串的开始,$ 匹配一个字符串的结束
[a-zA-Z] 表示匹配一位 英文字母(大小写都可以)
\w{5,9} 表示匹配最小5位,最大9位的数字字母下划线组成的字符串
[a-zA-Z] 匹配一位,\w{5,9} 匹配 5-9位,最小为 1+5=6,最大为 1+9=10,所以是匹配 6-10 位。

字符转意
有时候可能有匹配元字符. 或者 * 或者 \w 或者 \d 等,例如: C:\window 如果直接匹配 C:\window,就会出现问题,因为 \w 会被表示为别的意义,\w 在正则表达式中是匹配数字字母下划线,例如:C:_indow,C:2indow 这样的字符串才会被匹配,因此就需要 \ 来取消这些字符的的含义,例如:\. \* \\w

匹配: C:\windows 带有元字符的字符串
通过 \ 将 \w 进行转义  C:\\windows 才可以匹配

匹配几种格式的电话号码,(030)66666666,或099-58965878,或16899999999

\(?\d{3}[)-]?\d{8}
分解一下:
?:前面的字符匹配 0 次 或者 一次
\(?:\( 是将元字符 ( 进行转义,? 匹配 0 次或者一次 (
\d{3}:匹配 3 次 0-9 的数字 相当于 [0-9]{3}
[)-]?:) 和 - 各匹配 0 次 或者一次
\d{8}:匹配 8 次 0-9 的数字

上面的表达式看似完美,但是像这种 030)66666666,(030-66666666 不正确的格式也能匹配,这个时候急需要用到【分支条件】,正则表达式里的【分支条件】是指有几种匹配规则,只要满足一种规则就视为匹配了,具体方法就是使用 | 把规则分开。

例如:匹配上面的电话号码,可以分为两块
\(\d{3}\)\d{8}|\d{3}[-]?\d{8}

反义
有时候可能要查询不属于某个范围内的字符,比如想配置除了 a,b,c 字符外的所有字符,可以这样写 [^abc]

\W  匹配任意不是字母,数字,下划线,汉字的字符
\S  匹配任意不是空白符的字符
\D  匹配任意非数字的字符
\B  匹配不是单词开头或结束的位置
[^a]    匹配除了x以外的任意字符
[^abcde]    匹配除了aeiou这几个字母以外的任意字符

相关文章

网友评论

      本文标题:正则表达式入门

      本文链接:https://www.haomeiwen.com/subject/ahttvhtx.html