0

jQueryを使用してクラス属性を取得していますが、部分文字列に続く数字の部分文字列を取得する必要があります"position"

たとえば "position7 selected"、取得する必要があります"7"

たとえば "navitem position14 selected"、取得する必要があります"14"

私は書き始めました:

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

しかし、私は正規表現に迷い込んでいます。どんな助けでも大歓迎です。私は実際には正規表現が本当に好きですが、まだ学んでいます!

最初の回答による更新:無視する必要のある別の数字のグループがある可能性がありますたとえば、「navitem2position14selected」「14」を取得する必要があります

4

4 に答える 4

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

呼び出しはを返す["position14", "14"]ので、[1]要素は14です。

あなたは正しい方向に進んでいます(\d+)、それは連続した数字のグループと一致します。これは、リテラル文字列の直後にある場合にのみ、そのグループに一致することを示しています"position"

于 2012-11-29T15:50:01.703 に答える
3

あなたの試みには2つの問題があります。1つ目は、文字列の最後に。で固定することです$。したがって、後positionに数字を表示する代わりに、文字列の最後に数字を表示します。同時に、あなたはまったく言及positionしません。あなたが探しているのはこれです:

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

matches

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

数字ではないものはすべて置き換えることができます

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

文字列に他の数字が含まれている場合でも、replaceを使用できます

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

ただし、他の回答で他の正規表現の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 に答える