我将使用什么正则表达式来检索此字符串后面的数字?

时间:2012-11-29 15:38:24

标签: javascript regex

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

例如,

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

例如,

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

我开始写作:

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

但我对正则表达式感到迷茫,任何帮助都非常感激。 我其实非常喜欢正则表达式,但我还在学习!

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

4 个答案:

答案 0 :(得分:4)

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

调用返回["position14", "14"],因此[1]元素为14。

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

答案 1 :(得分:3)

您的尝试有两个问题。首先是使用$将其锚定到字符串的末尾。因此,不是在position之后给出数字,而是在字符串的末尾给出数字。与此同时,你根本没有提到position。您正在寻找的是:

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

现在matches将是

["position14", "14"]

答案 2 :(得分:2)

您可以替换非数字的所有内容

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

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

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

但是,您可能希望在其他答案中使用其他正则表达式之一。

答案 3 :(得分:1)

  var r = "aaa 1 bb 2 position 113 dd".match(/position\s*(\d+)/)
  if (r instanceof Array )
      return r.pop()