使用正则表达式从单词中获取只有整数

时间:2013-10-04 19:57:53

标签: javascript jquery regex

我对正则表达不太满意,所以我需要你的帮助

在下面的输入中,我需要在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+/);

3 个答案:

答案 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,因为它是你字符串上的最后一个数字。