答案 0 :(得分:2)
答案 1 :(得分:0)
根据this article Javascript不支持lookbehind。这个表达式适合你吗?
(?:\[)([0-9]+(?:\.[0-9]*)?)(?:\])
编辑:或者,更简洁\[(\d+(?:\.\d*)?)\]
(感谢Phrogz指出这一点)
EDIT2:为了解决jQuery位问题,也许这样的东西可以工作(从jQuery :selected
文档中取出):
$("select").change(function () {
$("select option:selected").each(function () {
var value = $(this).text();
// Do regex magic
});
});
答案 2 :(得分:0)
a)您应该将此值作为您选项的值,例如
<select>
<option value="193.33">Stuff [193.33]</option>
<option value="19232l.39393">Stuff2 [19232l.39393]</option>
</select>
b)如果您无法更改HTML,那么您想要的正则表达式是:
/\[\d+(\.\d+)?\]/
由于多种原因,你不能使用你拥有的东西,包括大多数JS解释器都不支持正面的后观断言这一事实。因此,我们必须捕获方括号,然后忽略它们,如下所示:
$('foo option:selected').each(function(){
var float = /\[(\d+(\.\d+)?)\]/.exec(this.value)[1] * 1;
});
答案 3 :(得分:-1)
这里有一个很好的工具来测试你的正则表达式