javascript - js 正向预查的正则 匹配不上?
问题描述
目的:去除大括号右边的空格。下面的可以://第一个var a = '我是空格 {我是参数} 我前面 {我是参数} 有空格 我前面的空格不匹配';hand_trim1(a);function hand_trim1(str){
return str.replace(/(?:})s+/g,’}’);
}
//第二个var a = '我是空格 {我是参数} 我前面 {我是参数} 有空格 我前面的空格不匹配';hand_trim2(a);function hand_trim2(str){
return str.replace(/}s+/g,’}’);
}
//第三个(这个为什么就是匹配不上呢????????)var a = '我是空格 {我是参数} 我前面 {我是参数} 有空格 我前面的空格不匹配';hand_trim3(a);function hand_trim3(str){
return str.replace(/(?=})s+/g,’’);
}
问题解答
回答1:正向预查是零宽,意思就是宽度是0,只是匹配一个位置,只要这个位置满足就可以,并不匹配具体的内容;(?=})匹配的位置应该是在这个位置后面有一个};s+表示从这个位置起,后面跟着空白符;所以,满足上面两个条件的位置是这个位置后面的字符即是},又是空白符,因此,这种位置根本不存在,所以不匹配;其实这个位置应该是左边是一个},右边是s+,但是js没有负向断言,无法预测左侧的字符类型。
相关文章:
1. 如何修改phpstudy的phpmyadmin放到其他地方2. php - mysql中,作为主键的字段,用int类型,是不是比用char类型的效率更高?3. tp6表单令牌4. docker 17.03 怎么配置 registry mirror ?5. django - 后台返回的json数据经过Base64加密,获取时用python如何解密~!6. 我的html页面一提交,网页便显示出了我的php代码,求问是什么原因?7. 网络传输协议 - 以下三种下载方式有什么不同?如何用python模拟下载器下载?8. angular.js - Angular路由和express路由的组合使用问题9. 我在centos容器里安装docker,也就是在容器里安装容器,报错了?10. java 排序的问题
