你想要的正则表达式笔记

入门常识:

转义字符

\  可以把后面的符号强制转化为文本

\n  换行

系统规定字符串不能多行显示

用转义字符可以实现,或者加号

 

正则表达式

匹配特殊的字符或有特殊搭配原则的字符的最佳选择

尤其是用户名和密码:一般都会格式校验

邮箱地址,电话,主要是对字符串判断

两种创建方式:

  • 直接量

语法:/正则表达式主体/修饰符(可选)

 

  • new RegExp()

第一个参数还可以直接把独立的正则表达式添加进去,而且是独立的

如果不加new的话,就是正则表达式的引用

 

修饰符

多行匹配的解释:

首先字符串得多行

^a表示以a开头的字符串,上述结果如下

虽然加了换行符,但是还是看做一行字符串的

因此必须采用多行匹配才能获取两个a

多行匹配主要是和开头和结尾配合用的。

 

正则表达式相关方法

 

  • reg.test(str): 有满足的就返回true,没有就返回false

  • str.match(reg): 把符合的选择出来,这是字符串的方法,不过经常使用

  • reg.exec(str) :返回数组,存放匹配的结果 ,常与 lastIndex属性联用

 lastIndex值就是返回数组中的index。

ps: lastIndex值可以手动修改控制返回匹配的位置;此外如果不加g修饰符, lastIndex值一直为0.

  • str.replace( ) : 替换匹配值

字符串去匹配没有访问全局的能力

如果不加g修饰符就和之前一样的

 

 

正则表达式主体

  • 方括号[ ] : 表示在范围中取一个值

  • ^: 写在表达式[ ]里面表示非

  • ( | ):括号表示优先级高一点而已

| 表示或者,bd 和 v中选择一个

 

 

元字符

和表达式是一个东西

  • \w 和 \W

 

 

当然也可以写在方括号里:表示其中范围的一个

ps:以上组合可以匹配任意字符。

 

  • \d 和 \D

 

 

  • \s 元字符:用于查找空白字符。

在正则表达式里写空格就是真的空格。

 

  • \b 单词边界 和  \B  非单词边界

这是选择的左边界,如果两端都设有边界就是下列情况,只能获取中间的abc

 

  • Unicode编码

 

编码是分层的,16进制16层

我们通常使用的是第一层,简化就是\u0000 - \uffff

小例子:

 

 

量词

 

  • n+ :表示字符出现1到无穷多次

  • n*  : 表示出现0词到多次

与n+ 相比出现“”的原因是识别7次之后光标移到g的后面,有段逻辑距离,再往后就只能显示0次,则为空了。

 

出现8个空的原因是根据光标移动来的。

 

贪婪原则:能取多就不会取少

打破贪婪原则:n??  或者 n*?  ;能取0就不会取1

量词量的是前面的n,保证每一个都来自同一个区间。

 

  • ^n 开始  和 n$ 结束

上式表达的是只有ab

  • 正向预查或正向断言

/a(?!b)  后面不是跟着b的。

 

一个实例:检验一个字符串首尾是否含有数字

 

检验一个字符串首尾是否都含有数字

中间随便填都可以。

 

 

一些拓展

例1:找相同的

(n)\1 : 表示反向引用第一个匹配的值;(n)表示子表达式

例2:找aabb类型的

 

 

例3:将aabb转为bbaa

$1表示引用第一个子表达式,$2表示引用第二个子表达式。

还可以用这种方式:

 

例4:转为小驼峰

该function()匹配了多少次就会执行多少次。

 

例5:字符串去重

 

例5:数字每隔三个打个逗号

“100000000”—— 100,000,000

思路:从后往前,使用$, 3的倍数,替换空。


posted @ 2018-09-09 15:22  沉浮乡土  阅读(208)  评论(0编辑  收藏  举报