0

我正在使用 jQuery 来检索类属性,我需要获取子字符串后面的数字的子字符串"position"

例如 "position7 selected"我需要检索"7"

例如 "navitem position14 selected"我需要检索"14"

我开始写:

$(this).attr('class').match(/(\d+)$/))

但是我迷失了正则表达式,非常感谢任何帮助。我实际上真的很喜欢正则表达式,但我还在学习!

由于第一个答案而更新:可能还有另一组我需要忽略的数字例如“navitem2 position14 selected”我需要检索“14”

4

4 回答 4

4
"navitem position14 selected".match(/position(\d+)/)[1]

调用返回["position14", "14"],所以[1]元素是 14。

您在正确的轨道上使用(\d+),它将匹配一组连续的数字。这只是说仅当它直接跟随文字 string 时才匹配该组"position"

于 2012-11-29T15:50:01.703 回答
3

您的尝试有两个问题。第一个是你用 . 将它锚定到字符串的末尾$。因此,与其给你后面的数字,position不如给你字符串末尾的数字。同时你根本不提position。您正在寻找的是:

var matches = str.match(/position(\d+)/);

现在matches

["position14", "14"]
于 2012-11-29T15:50:26.127 回答
2

你可以替换所有不是数字的东西

str.replace(/\D/g,"");

如果字符串中存在其他数字,您仍然可以使用替换

str.replace(/^.*position(\d+).*$/,"$1");

但是,您可能想在其他答案中选择其他正则表达式之一。

于 2012-11-29T15:40:08.473 回答
1
  var r = "aaa 1 bb 2 position 113 dd".match(/position\s*(\d+)/)
  if (r instanceof Array )
      return r.pop()
于 2012-11-29T15:49:38.633 回答