1

私は持っています:

var myclass = 'moreElements showAddElements-570';
var re = new RegExp('showAddElements\-\d*');
var m = re.exec(myclass);

alert(m[0]);
alert(m[1]);

最初のアラートは「showAddElements-」になり、2番目のアラートは「undefined」になります。「570」を取得したいのですが、ここで何が間違っているのでしょうか。テストすると、少なくとも「showAddElements-570」に到達します...ここで何が間違っているのでしょうか。

あらゆるヒントのためのThx!

追伸:「showAddElements-」の後の数字だけが欲しいのですが、他の数字はすべて省略してください。

4

4 に答える 4

5

正しい正規表現を使用するだけです。

var re = /showAddElements-(\d+)/;

ダッシュの前のバックスラッシュを削除し (不要)、数字の周りに括弧を追加してキャプチャ グループにしました。それ以外の場合m[1]は常にundefined.

実際に見てください

于 2012-09-21T14:46:41.647 に答える
3

必要なサブパターンを実際にキャプチャする必要があります。

/showAddElements-(\d*)/

-文字クラスの外では意味がないため、エスケープする必要がないことに注意してください。

于 2012-09-21T14:47:25.073 に答える
1

動作するコードは次のとおりです。

var myclass = 'moreElements showAddElements-570';
var re = new RegExp(/showAddElements\-(\d*)/);
var m = re.exec(myclass);
alert(m[1]);

ラインには2つの問題がありましたRegExp。最初の問題は、式がスラッシュではなく単一引用符で囲まれていることです。スラッシュで何かをラップできる手がかりがなかったので、何が起きているのかを初めて知ったとき、これは私の心を吹き飛ばしました。これらがないと、式の意図する文字列として扱われます。

2番目の問題は()、数字部分の周りに何もなかったことです。実際にその部分を「つかむ」にはそれが必要です。

ここに作業リンクがあります: http://jsfiddle.net/MvG2C/

于 2012-09-21T14:49:49.863 に答える
0

キャプチャするには、目的のクラスを括弧で囲む必要があります。

var re = new RegExp('showAddElements\-([0-9]*)');
于 2012-09-21T14:49:04.190 に答える