我对正则表达不太满意,所以我需要你的帮助
在下面的输入中,我需要在name属性
的最后一个括号中使用正则表达式只有整数<input type="text" class="redux-datepicker group hasDatepicker" value="" name="redux_demo[17d][2]" id="g-date" data-id="g">
以下代码将返回17,我在最后一个括号[]
中需要2var slideCount = jQuery(newSlide).find('input[type="text"]').attr("name").match(/\d+/);
答案 0 :(得分:0)
试试这个正则表达式:
.attr("name").replace(/\[(\d+)\]$/, '$1');
注意我使用.match
.replace
答案 1 :(得分:0)
你需要做的是调整你的正则表达式以匹配“(开括号)然后(数字)然后(结束括号)然后(字符串的结尾)”,这是用这样的正则表达式完成的:/ [\ d +] $ /
但由于方括号在正则表达式中具有特殊含义,因此必须使用“\”对它们进行转义。此外,您只想捕获数字本身,而不是括号,因此您可以在数字周围添加圆括号。
这导致regexp / \ [(\ d +)\] $ /
完整的一行:
var slideCount = jQuery(newSlide).find('input[type="text"]').attr("name").match(/\[(\d+)\]$/)[1];
答案 2 :(得分:-2)
要匹配最后一次出现,您需要使用否定前瞻。您正在寻找的表达式是\d+(?!.*\d+)
,这意味着:匹配一个或多个数字的序列,只要字符串后面没有其他数字序列。
在你的情况下,这意味着正则表达式将跳过17,因为它后面至少有一个其他数字,但会匹配2,因为它是你字符串上的最后一个数字。