如果 URL 包含 6 位数字,则将该值附加到一个类

Posted

技术标签:

【中文标题】如果 URL 包含 6 位数字,则将该值附加到一个类【英文标题】:If URL contains 6 digit number append the value to a class 【发布时间】:2017-08-09 02:27:55 【问题描述】:

如果此问题已得到答复,我深表歉意。我尝试过搜索,但是对此感到新鲜,也许我没有使用正确的术语。

我有一个页面,其中包含以下 pdf 示例的链接:

<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>

如果 URL 包含 6 位数字(如上)和 .pdf,是否可以使用 regex 和 JQuery 将这些值作为类添加到 href 中?所以结果是:

<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf" class="pdf190488">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf" class="pdf112254">Link2</a>

我尝试了以下但没有雪茄

var regex = "^[0-9]1,6$";
$('a').each(function() 
    $(this).addClass(regex.match($(this).attr("href"))[0]
);

【问题讨论】:

【参考方案1】:

有几个错误:

正则表达式已锚定:没有匹配项 正则表达式初始化错误 使用方法exec 而不是match JS 无效(缺少右括号)

var regex = /[0-9]1,6/;
$('a').each(function() 
  $(this).addClass('pdf' + regex.exec($(this).attr("href"))[0]);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>

另外,如果您的意思是正好是 6 位数字,请将正则表达式更改为 [0-9]6

【讨论】:

谢谢阿尤布。这成功了。欣赏解释。 1 个快速问题。您提供的代码按预期工作,但是如果有一个不符合条件的 URL(不包含 6 位数字),它将无法在该点之后的任何其他链接上工作。例如:files/190488/nameoffile.pdf">L1</a> files/nameoffile.pdf">L2</a> files/112254/nameoffile.pdf">L2</a> 结果是:files/190488/nameoffile.pdf" class="%test:190488% ">L1 files/nameoffile.pdf">L2</a> files/112254/nameoffile.pdf">L3</a> 托马斯有什么想法吗?【参考方案2】:

您的代码存在一些问题:

    你的正则表达式,"^[0-9]1,6$"

这是说您期待一个数字,长度为 1 到 6 个字符,它位于字符串的开头,也是结尾。您还将 is 设置为字符串,而您可以使用实际表达式:

var regex = /[0-9]1,6/g;
    regex.match 不是方法。

您正在调用match 作为正则表达式的方法,但实际上是相反的。 match 是一个字符串方法。

$(this).attr('href').match(regex)[0]

对您的代码的更新可能如下:

var regex = /[0-9]1,6/g;

$('a').each(function() 
  var $this = $(this);
  $this.addClass('pdf' + $this.attr('href').match(regex)[0]);
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>

有几种方法可以改进这一点,包括在添加类之前检查匹配是否存在。

【讨论】:

感谢 chazsolo 的解释和替代解决方案。【参考方案3】:

以上网址:

$('a').each(function() 
  var path = $(this).attr("href");
  var str = path.split("/");
  var fileName = str[5].split(".");
  var className = fileName[1]+str[4];
  $(this).addClass(className);
);

【讨论】:

以上是关于如果 URL 包含 6 位数字,则将该值附加到一个类的主要内容,如果未能解决你的问题,请参考以下文章

Rails:如果已使用永久链接,则将数字附加到永久链接

归一化具有多个条件的数据帧,R

R - 如果列包含来自向量的字符串,则将标志附加到另一列

安卓layout布局,如何靠右

Swift 4 - SwiftyJson 比较数组并合并找到的值

(HDU)1013 --Digital Roots(数字根)