我正在使用jQuery来检索class属性,我需要获取子字符串"position"
后面的数字的子字符串
"position7 selected"
我需要检索"7"
"navitem position14 selected"
我需要检索"14"
我开始写作:
$(this).attr('class').match(/(\d+)$/))
但我对正则表达式感到迷茫,任何帮助都非常感激。 我其实非常喜欢正则表达式,但我还在学习!
由于第一个答案而更新:可能还有另一组数字我需要忽略 例如“navitem2 position14 selected”我需要检索“14”
答案 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()