From jQuery docs:
To use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[]^`{|}~ ) as a literal part of a name, it must be escaped with with two backslashes: \\
So you need to do:
str="#start\\[2\\]";
result = $(str).val();
alert(result);