javascript - js正则求助 匹配前面为abc,但是只输出后面的部分
天蓬老师
天蓬老师 2017-04-10 15:12:10
0
3
374

如下

'left: -11px;bottom: -103px;top: 10px;'.match(/(?=bottom\s*:\s*)[^;]*;/g);
//=》["bottom: -103px;"]

这个无论如何都是匹配整个bottom: -103px;但是我只想输出这里的-103px到底该怎么改呢?

我找到这个类似的

'aaazhaoxianliea'.match(/zhao(?=xianlie)/g);
//=》["zhao"]

这是匹配后面紧跟着xianliezhao,但是当我想把它改为匹配xianlie,但是前面必须有zhao时就不行了,难道不是单纯的改一下前后位置吗?

'aaazhaoxianliea'.match(/(?=zhao)xianlie/g);
//=》null
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

모든 응답(3)
巴扎黑

'aaazhaoxianliea'.match(/zhao(?=xianlie)/g); //=》["zhao"]

这个称作正向预查 形如 (?=pattern)

所谓正向预查,意思就是:要匹配的字符串,后面必须紧跟着 pattern

但是负向预查的意思并不是 要匹配的字符串,前面紧跟着 pattern

负向预查, (?!pattern) , 要求字符串的后面不能紧跟着某个pattern

下面来看第一段代码

'left: -11px;bottom: -103px;top: 10px;'.match(/(?=bottom\s:\s)[^;]*;/g); //=》["bottom: -103px;"]

这里使用正向预查是没有意义的 ,等价于

'left: -11px;bottom: -103px;top: 10px;'.match(/bottom\s*:\s*[^;]*;/g); //=》["bottom: -103px;"]

为了获取 bottom:后面的值,首先不能用全局匹配,并且需要对后面的部分进行分组,也就是将 [^;]* 改为 ([^;]*)

'left: -11px;bottom: -103px;top: 10px;'.match(/bottom\s*:\s*([^;]*)/); 

这样返回的就是一个数组 //["bottom: -103px", "-103px"]

然后取出数组元素即可,也就是

'left: -11px;bottom: -103px;top: 10px;'.match(/bottom\s*:\s*([^;]*)/)[1]  // -103px
伊谢尔伦
var arr = /bottom\s*:\s*([^;]*);/g.exec('left: -11px;bottom: -103px;top: 10px;');
console.log(arr[1]); //-103px
Ty80

分组。把(head)(tail*) 然后replace $1$2,$2

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!