0

我不擅长正则表达式,所以我需要你的帮助

在下面的输入中,我需要在 name 属性的最后一个括号中使用正则表达式仅整数

<input type="text" class="redux-datepicker  group hasDatepicker" value="" name="redux_demo[17d][2]" id="g-date" data-id="g">

下面的代码将返回 17,我需要 2 在最后一个括号 []

var slideCount = jQuery(newSlide).find('input[type="text"]').attr("name").match(/\d+/);
4

3 回答 3

0

试试这个正则表达式:

.attr("name").replace(/\[(\d+)\]$/, '$1');

注意我改变.match.replace

于 2013-10-04T20:02:59.913 回答
0

您需要做的是调整您的正则表达式以匹配“(左括号)然后(数字)然后(右括号)然后(字符串结尾)”,这是通过这样的正则表达式完成的:/[\d+]$ /

但是由于方括号在正则表达式中具有特殊含义,因此您必须使用“\”对其进行转义。此外,您只想捕获数字本身,而不是括号,因此您在数字周围添加圆括号。

这导致正则表达式 /\[(\d+)\]$/

完整线路:

var slideCount = jQuery(newSlide).find('input[type="text"]').attr("name").match(/\[(\d+)\]$/)[1];
于 2013-10-04T20:12:16.970 回答
-2

要匹配最后一次出现,您需要使用负前瞻。您要查找的表达式是\d+(?!.*\d+):匹配一个或多个数字的序列,只要字符串上没有其他数字序列。

在您的情况下,这意味着正则表达式将跳过 17,因为它后面至少有一个其他数字,但会匹配 2,因为它是字符串中的最后一个数字。

于 2013-10-04T20:16:19.540 回答