我已经在这里问了类似的问题:stackoverflow.com/questions/42674096/how-to-make-a-pipe-with-regex-in-angular2 /
现在,我确实从给定的答案中尝试了以下内容:
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({name:'regMatch'})
export class RegMatch implements PipeTransform {
transform(value: string, arg?: any): any {
let targetMatched = $('div.poll').text();
// console.log(targetMatched );
let reg = new RegExp(/\((.+?)\)/);
let result: any;
do {
let matched:any = result;
console.log(matched);
}
while((result = reg.exec(target)) !== null)
}
}
当我把这个管| regMatch
放回来时,循环崩溃浏览器会发生什么。
我该如何解决这个问题?如何匹配(a) (b) (c)
或类似内容,然后让我们BOLD
$('div.poll').text();
答案 0 :(得分:1)
您正在运行一个带有正则表达式的循环,该正则表达式不包含/g
(全局修饰符)。这意味着,每次你的正则表达式找到匹配时,lastIndex
属性都不会改变,并且在下一次迭代中,将找到相同的匹配,依此类推,导致无限循环。
请参阅String#exec
documentation at MDN:
lastIndex
开始下一场比赛的索引。当“g”不存在时,它将保持为0。
使用
let reg = /\([^)]+\)/g;
它将匹配 (
的所有次出现,然后匹配除)
以外的1 +个字符,然后匹配)
。