2011-08-13 65 views
1

部分我有一个输入字段具有此名称:获得从字符串

myinput[something][etc]

我怎样才能得到最后[]部分从它的内容?即在这种情况下为etc

回答

2

您可以使用正则表达式来匹配最后一对[]之间的任何内容。因为[]在正则表达式中有特殊含义(它们用于分隔字符类),所以您必须使用\来避免它们。整个匹配(除[]之外)使用$固定在字符串的末尾。

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

+1 - 我羡慕你这样的人谁可以拉正则表达式的解决方案的帽子。 – AlienWebguy

+0

@外星人这个超级简单,老实说。它看起来很丑,因为有很多逃跑。 –

+0

我想,一旦我真的到处去“学习”,我会同意哈哈。在此之前,道具,先生:) – AlienWebguy

6

如果您知道该字符串与]结束,您可以使用简单的字符串操作:

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

+1的解决方案比正则表达式快一倍:http://jsperf.com/regex-vs-lastindexof – AlienWebguy

+0

@AlienWebguy:它的IE浏览器速度提高了6倍, Firefox浏览器。 :) – Guffa

+0

哇这是关于[V8](http://code.google.com/p/v8/)的说法 - 该基准测试显示IE9的最终索引运行速度是Chrome的两倍以上。说它不是这样! – AlienWebguy