正则断言理解

以白话文的方式记录一下关于正则断言的几个用法

方便后面使用时查看

(?:pattern) , (?=pattern) , (?<=pattern)

(?<=pattern) 一般放在开头做匹配

匹配开头:匹配结果是以pattern开头的(取值时不想要pattern)

(?<=5)\d 匹配前1位为5的单个数字: 0123456789 => 6

匹配末尾: 匹配结果是以pattern结尾(结果会包含pattern)

\d(?<=5) 匹配以5结尾的单个数字: 0123456789 => 5

(?=pattern) 一般放在末尾做匹配

匹配末尾:结尾带有pattern的结果(取值时不想要pattern)

\d(?=5) 匹配所有后面跟5的单个数字: 0123456789 => 4

匹配开头:以pattern开头的结果(结果会包含pattern)

(?=5)\d 匹配以5开头的单个数字: 0123456789 => 5

(?:pattern) 返回结果会包含断言部分

匹配开头: 匹配结果是以pattern开头的结果(取值想要pattern并且结果不包含pattern)

(?:5)\d 0123456789 => 56

匹配结尾: 匹配结果后面跟pattern的内容(取值想要pattern并且结果不包含pattern)

\d(?:5) 0123456789 => 45

(?!pattern) , (?<!pattern)

(?!pattern) 一般放末尾匹配

匹配末尾: 结尾不带有pattern的结果(取值时不想要pattern)

\w(?!\d) 01234a6789 => [4,9] (数字后面不带有数字)

匹配开头: 结果不是以pattern开头的(结果会包含pattern)

(?!\d)\w 01234a6789 => a

(?<!pattern) 一般放开头匹配

匹配开头: 结果不是以pattern开头的(不想要pattern部分)

(?<!\d)\w 01234a6789 => [0,6]

匹配结尾: 结果不是以pattern结尾的(结果会包含pattern)

\w(?<!\d) 01234a6789 => a

最后记录下经典的断言正则使用

对数字进行没三位加",":

(\d)(?=(?:\d{3})+($|\.)) (小数点后只有2位的情况,超过2位小数的话就对整数用然后加小数吧)

可以包含数字、字母、下划线,并且要同时含有数字和字母,且长度要在8-16位之间。

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z_]{8,16}$

标签: none

添加新评论