美文网首页
正则 非获取匹配

正则 非获取匹配

作者: 方_糖 | 来源:发表于2020-07-14 12:30 被阅读0次

正则测试链接:https://regex101.com/

1.有哪些非获取匹配

参考:https://www.runoob.com/regexp/regexp-metachar.html

image.png
2. 什么是非获取匹配,和获取匹配有什么不同

当我们匹配一个获取匹配的正则表达式,如/123/, 会发现123为选中状态

image.png

但是当我们匹配一个包含非获取匹配的正则表达式时,如/(?=\d)/,会发现,以数字结尾的地方都没有被选中,而是用虚线断定了界限位置

image.png
3. 几种非获取匹配的使用理解

(1)(?:pattern)
组合或字符|使用来匹配多个重复结构的字符串
如:"5453525150"中匹配54,50

image.png
注意:/5(?:4|0)/g写法与/5(4|0)/g/54|50/g写法区别不大,不能专门用作非获取匹配的作用例子

(2)(?=pattern) 正向肯定预查
匹配以pattern结尾的字符串
如: 匹配"windows2000 windows2001"中windows2000中的windows

image.png

(3)(?!pattern) 正向否定预查
匹配不以pattern结尾的字符串
如: 匹配"windows2000 windows2001"中的windows,但不能匹配windows2000中的windows

image.png

(4)(?<=pattern) 反向肯定预查
匹配以pattern开头的字符串
如:匹配"2000windows 2001windows"中2000windows中的windows

image.png

(5)(?<!pattern) 反向否定预查
匹配不以pattern开头的字符串
如:匹配"2000windows 2001windows"中的windows,但不能匹配2000windows中的windows

image.png
4.非获取匹配的实际使用距离

问题一:用正则表达式方法实现numsplit,为任意数字添加千位分隔符。(例如:1234567.1234转换成1,234,567.1234

解决方法:
可以把整数部分和小数部分分开处理,小数部分不用处理
对于整数部分,由于使用普通的split(",")replace(/\d{3}/, ',')只会使得1234567转换成123,456,7,不符合我们的初衷,所以我们要使用(?=pattern) 正向肯定预查,来查找以至少三个数字结尾的分割处

image.png
然后通过replace方法替换

replace使用
str.replace(reg/str,replacement)中replacement可以为:字符串,$n,函数
(参考:https://www.w3school.com.cn/jsref/jsref_replace.asp)

var num="1234567";

var res = num.replace(/\d(?=(\d{3})+$)/g,function(str) {
    return str + ","
})

相关文章

  • 正则 非获取匹配

    正则测试链接:https://regex101.com/ 1.有哪些非获取匹配 参考:https://www.ru...

  • python正则匹配

    python正则匹配规则和一个小实例 python正则匹配规则 正则小栗子 获取一个页面的网页信息 比如我要获取简...

  • Python基础022--正则表达式

    正则表达式模块、贪婪匹配和非贪婪匹配、正则分组、match和search的使用 常用的正则表达式元字符 正则表达式...

  • 正则

    正则的方法test:正则去匹配字符串,如果匹配成功为true,失败返回false 转义字符:\s :空格\S :非...

  • 正则表达式的贪婪模式和非贪婪模式

    一、什么是贪婪模式和非贪婪模式? 定义 贪婪模式:正则表达式趋向于匹配最大长度。 非贪婪模式:正则表达式趋向于匹配...

  • (?:pattern)与(?=pattern)的区别

    官方定义 (?:pattern) 匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行...

  • 正则匹配库

    正则匹配用户名: 正则匹配用户名: 正则匹配手机号或者固定电话: 匹配中文: 正则匹配用户密码: 正则匹配电子邮箱...

  • 贪婪与非贪婪匹配

    1.什么是正则表达式的贪婪与非贪婪匹配 贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使...

  • 微信jssdk获取确切城市名字

    步骤 与服务端通信获取签名 配置jssdk 获取详细经纬度后反查腾讯地图得到确切地址 正则匹配已开通服务城市,匹配...

  • 正则表达式速查

    正则表达式速查 正则表达式默认为“贪婪”,最大匹配;在量词后加?可改为“非贪婪” 常用代码 匹配要求代码任意汉字[...

网友评论

      本文标题:正则 非获取匹配

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