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. android-webview - Android 7.0 webview不自动刷新2. java - C++ error C2678: 二进制“<<”: 没有找到接受“const std::ostream”类型的左操作数的运算符3. Java错误:只能导入类型XYZ解析为包4. 错误:到主机的TCP / IP连接失败。java.net.ConnectException:连接被拒绝:connect5. Java EE 6:JSF与Servlet + JSP我应该学习JSF吗?6. vue.js - vue开发的项目,想在页面打开的时候使input自动聚焦,使用的官方的自定义指令,但是在ios真机上测试无效7. javascript - angularJs里点击添加删除类8. 解决方法:找不到“ http://java.sun.com/jsp/jstl/core”的标记库描述符9. python - 用ffmpeg采集视频,用terminate没法结束进程10. javascript - 使用百度文本编辑器ueditor不显示样式问题

网公网安备