我有以下字符串(field_data
):
<fieldset>
<div class='control-group'>
<h5>New Side Dish</h5>
<input id="menu_dishes_attributes_1344897592128_side_dishes_attributes_70308623619760_name" name="menu[dishes_attributes][1344897592128][side_dishes_attributes][70308623619760][name]" placeholder="Name" size="30" type="text" />
<input id="menu_dishes_attributes_1344897592128_side_dishes_attributes_70308623619760__destroy" name="menu[dishes_attributes][1344897592128][side_dishes_attributes][70308623619760][_destroy]" type="hidden" value="false" />
<input id="menu_dishes_attributes_1344897592128_side_dishes_attributes_70308623619760_price" name="menu[dishes_attributes][1344897592128][side_dishes_attributes][70308623619760][price]" placeholder="Price" size="30" type="text" />
<input id="menu_dishes_attributes_1344897592128_side_dishes_attributes_70308623619760_restaurant_id" name="menu[dishes_attributes][1344897592128][side_dishes_attributes][70308623619760][restaurant_id]" type="hidden" />
<a href="#" class="remove_fields">X</a>
</div>
</fieldset>
我想获取和之间的数字[side_dishes_attributes]
,[restaurant_id]
它是70308623619760
第一次出现或最后一次出现,但我基本上只需要它的一个实例。
我知道您可以使用正则表达式和过滤器,但是每当我使用其中任何一个时,它要么返回字符串中的所有数字,要么在不正确的输出中显示所有数字集。
我抓取的数字不是静态的,因此它会更改代码的每次迭代,但名称side_dishes_attributes
和restaurant_id
是恒定的。
这是我到目前为止尝试过的,这里是输出:
field_data = $(this).data('fields')
start_pos = field_data.indexOf("side_dishes_attributes][")
end_pos = field_data.indexOf("][_destroy]", start_pos)
result_text = field_data.substring(start_pos, end_pos)
console.log("Result:", result_text)
输出:
Result: side_dishes_attributes][70208369492160][name]" placeholder="Name" size="30" type="text" /> <input id="menu_dishes_attributes_70208370296900_side_dishes_attributes_70208369492160__destroy" name="menu[dishes_attributes][70208370296900][side_dishes_attributes][70208369492160
我试过了:
result = field_data.replace(/[^0-9]/g, "")
console.log(result)
输出:
227020836200328070208362003280702083620032803070208...
我也试过玩这个:
http://rubular.com/r/r5iowGGmw4
但我不太了解正则表达式以使其正常工作。
我会很感激任何指示。我在 jQuery Coffeescript 中完成了所有这些工作(但如果你只用 jQuery 给我看代码,我也可以转换它)。
可能的答案?
start_pos = field_data.indexOf("side_dishes_attributes][") + 24
end_pos = field_data.indexOf("][name]", start_pos)
result_text = field_data.substring(start_pos, end_pos)
console.log("Result", result_text)
我使用它得到了正确的输出,但我想知道是否有更好的方法。