javascript - 正则表达式拆分 - 一次有效

标签 javascript jquery html regex

我有以下 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/

相关文章:

php - jquery php 问题

javascript - HTML5 Canvas 扇贝形状

jquery - 具有 DIV 切换规范的功能

javascript - 为什么我不能使用 .colspan 设置该元素的 colspan?

javascript - AngularJS:图像上传+ FileReader 预览。 Controller 、指令和范围之间的绑定(bind)问题

javascript - Jquery改变背景颜色并平滑过渡

javascript - 在 Javascript(和 jQuery.extend)中限定 "this"

PHP文件上传: Syntax?

html - div 外部的 CSS3 图像悬停事务

html - IE11 显示每个 { 显示 : table-cell } element at a new line