我有以下Jquery和Regex:
$("[class^=ipsum-img],[class^=ipsum-img-]").each(function(){
var x = $(this).attr("class");
console.log(x.length);
if (x.length>8) {
var m = x.split(/(\d+)[^-]*$/g);
console.log(m);
}
else{
console.log("short");
}
});
我正在查找“.ipsum img”和“.ipsum-img-xxxxxx”类的所有实例。
每发生一次,我都会得到班级的长度。
如果长度大于8,我可以假设是类“.ipsum-img-xxxxxx”
如果是“ipsum-img-xxxxxx”,我需要使用regex,并从类名中解析出“xxxxxx”。
我正在使用以下regex:
var m = x.split(/(\d+)[^-]*$/g);
console.log(m);
在我的控制台中,我看到以下内容:
数组[“ipsum img-”,“000000”,“]
数组[“ipsum-img-ffffff”]
数组[“ipsum img efefef”]
似乎regex只是为第一个实例创建拆分。我检查了我的页面源代码,并验证了这是页面上仅有的三个类。
为什么只有一次?
最佳答案
正则表达式查找一个由一个或多个数字组成的字符串,后跟字符串末尾不-
的任意数量的字符。无论是"ipsum-img-ffffff"
还是"ipsum-img-efefef"
都不匹配。
就我个人而言,无论如何我都不会用.split()
来做:
var matched = /ipsum-img-(\d+)$/.exec(this.className);
var number = matched && matched[1] || null;
关于javascript - 正则表达式拆分-工作一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29218953/