2011-08-13 21 views

答えて

2

[]の最後のペアの間にあるものと一致する正規表現を使用できます。 []はregexp(文字クラスを区切るために使用される)で特別な意味を持っているので、\でエスケープする必要があります。完全一致([]以外)は、$を使用して文字列の最後に固定されています。

var s = 'myinput[something][etc]', 
    re = /\[([^\]]*)\]$/ 
    text = re.exec(s)[1]; // "etc" 
+3

1 - 私は帽子のうち、正規表現のソリューションを引くことができますあなたのような人がうらやましいです。 – AlienWebguy

+0

@エイリアンこれはスーパーシンプル、正直なところ。それは逃げるのがたくさんあるのでちょうど醜いように見えます。 –

+0

いったん私が実際に "学習する"ことになると、私はhahaに同意するでしょう。それまでは、小道具: – AlienWebguy

6

あなたは文字列が]で終わることがわかっている場合、あなたは、単純な文字列操作を使用することができます。

var name = "myinput[something][etc]"; 
var index = name.lastIndexOf('['); 
var last = name.substr(index + 1, name.length - index - 2); 
+2

正規表現よりも3倍速く+1:http://jsperf.com/regex-vs-lastindexof – AlienWebguy

+0

@AlienWebguy:IEでは6倍、IEでは15倍高速です。 Firefox。 :) – Guffa

+0

[V8](http://code.google.com/p/v8/)について語る価値がある - そのベンチマークでは、lastindexofをChromeより2倍以上実行しているIE9が示されています。そうではないと言ってください! – AlienWebguy

関連する問題