我有以下 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”的所有实例。
对于每次出现的情况,我都会得到类(class)的长度。
如果长度> 8,我可以假设是类“.ipsum-img-xxxxxx”
如果是“ipsum-img-xxxxxx”,我需要使用正则表达式,从类名中解析出“xxxxxx”。
我正在使用以下正则表达式:
var m = x.split(/(\d+)[^-]*$/g);
console.log(m);
在我的控制台中,我看到以下内容:
数组[“ipsum-img-”,“000000”,“”]
数组[“ipsum-img-ffffff”]
数组[“ipsum-img-efeffef”]
看起来正则表达式只是为第一个实例创建分割。我检查了我的页面源代码,并验证了这些是页面上仅有的三个类。
为什么只工作一次?
最佳答案
正则表达式查找由一位或多位数字组成的字符串,后跟任意数量的字符(-
直至字符串末尾)。 “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/