Una

接下来的日子,陆续把未总结的问题补充起来......

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

前言:

在日常项目开发中,正则的使用场景还是很多的,常见的使用场景:

1、给当前的地址栏添加参数

2、获取地址栏的参数

3、验证表单格式:手机号验证、邮箱的验证、保留两位小数的值的验证等

等等,学会正则,能极大的提高我们在项目开发中解决问题的效率。

 

什么是正则表达式?

正则表达式是记录文本规则的代码,或者说它是用来进行文本匹配的工具。

 

学习正则表达式的规则:

1、元字符(匹配字符)

 

  补充其他元字符:

    + :匹配重复1次或更多次

    * :匹配重复任意次

 例子:

\bhi\b.*\bLucy\b  

规则描述:先匹配一个hi的单词,然后是任意个除了换行符以外的任意字符(*是匹配任意个,.是匹配除换行符以外的任意字符),最后匹配一个lucy的单词。

^\d{5,12}$  

规则描述:只能输入5到12位的数字(^匹配字符串的开头,$匹配字符串的结尾)

 

2、字符转义

查找元字符本身,需要加\来取消字符的特殊意义。

例如查找.、*、\: \.、\*、\\

 

3、定义重复

 

Windows\d+

规则描述:匹配windows后面跟着1个或多个数字的字符串

 

4、字符类(自定义匹配的字符)

[]匹配指定的字符

例子:

[.?!]  

规则描述:匹配标点符合.或?或!

[a-z0-9A-Z_]  

规则描述:等同于\w匹配字母、下划线、数字

 

5、分歧条件(制定多个规则的表达式)

| 分割多个规则

例子:

\(0\d{2}\)[- ]?\d{8}|0\d{2}[- ]?\d{8}  

规则描述:匹配(022)-87678883或022-87678883或02287678883或(022)87678883

 

6、分组(一个规则重复匹配多次的定义方法)

使用()包裹规则

例子:

一个简单的ip匹配规则

(\d{1,3}\.){3}\d{1,3}  

正确ip匹配规则

((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

 

7、分组高级用法

  

   1、后向引用(这个名字取的都不好理解)

   用于重复搜索(重复匹配)前面某个分组匹配的文本

\b(\w+)\b\s+\1\b  

规则描述:匹配例如:youyi youyi beier,结果为youyi youyi,\1代表第一个组匹配的文本,从左到右以分组的左括号为标志,第一个出现的分组为1组,第二个为2组,以此类推。

 

   另外一种反向引用的写法  

\b(?<Word>\w+)\b\s+\k<Word>\k<Word>\b

  规则描述:?<word>(或?'word')通过这种方式来给分组匹配到的文本定义一个别名,反向分组中可以通过\k加<word>来引用前面分组中匹配到的文本

 

   2、断言

((?<=\d)\d{3})+\b  
规则描述:123456789,匹配结果456789;1234567890,匹配结果234567890.

8、反义

<a[^>]+>

 规则描述:匹配用尖括号括起来的以a开头的字符串(不加这个规则[^>],会匹配不上例如:<a5456>这样的格式,我的理解是在匹配字符串时会 将最后的>当做一个字符串,而不是在匹配>)

 

9、贪婪与懒惰(匹配最短的符合条件的字符串)

a.*?b

 规则描述:aabab,匹配结果aab。  

练习:

1、给一个很长的数字中每三位间加一个逗号

2、包含后面不是字母u的字母q的单词

3、其他博主博客:https://2ue.github.io/2017/11/24/regex-to-something/

 

参考学习资源:

MDN: 正则表达式

正则表达式30分钟入门教程:正则入门

 

持续更进中...

posted on 2018-08-21 16:53  youyi2016  阅读(221)  评论(0编辑  收藏  举报