0

私はmatchこの形式のURLから「12345」にしようとしています:

http://domain.com/folder/title_of_this_12345

これまでに試しました:

var pattern = "_([0-9]+)^";

alert(window.location.pathname.match(pattern));

しかし、私はnullで返されますか?

目的は、文字列の最後から最初のアンダースコアまでの数字を正規表現することですか?

4

3 に答える 3

4

をに置き換える^$、メソッドが機能します。^文字列の先頭に一致し、文字列の末尾に一致します(ここでは関係ありませんが、改行文字が存在する場合$の動作に関するドキュメントを確認してください)。$

非正規表現の解決策は可能ですが、リンクに番号が含まれる場合と含まれない場合は、最後のトークンが番号であるか、解析の結果がNaNであるかを確認する必要があります。したがって、正規表現はおそらくここでの適切な解決策です。

于 2012-06-18T03:37:43.940 に答える
2

明確にするために、一致した番号自体は、返された配列のインデックス1で取得されます。

alert(str.match(/_(\d+)$/)[1]);
于 2012-06-18T16:56:46.633 に答える
1

試す

var path = window.location.pathname;
var num = parseInt(path.substr(path.lastIndexOf('_') + 1, 10));

正規表現を含まない代替手段として。

実際、それを行うためのはるかに簡潔な非正規表現の方法については、質問に関するGGGのコメントを参照してください。

于 2012-06-18T03:40:50.943 に答える