我有一个HTML输入元素的属性,其值如下:
elements[1587f9aa-8a9e-4058-b1f3-d358041430c9][0][element-0][value]
如何在breckets [0]内找到并获取一个数字?
这个数字以及字符串的左右部分都会改变,所以我不能只提取第48个(或其他)符号。
该模式将始终相同,即使[element-?][value]
部分也是相同的。
答案 0 :(得分:2)
使用正则表达式,如下所示:
/elements\[[^\]]+\]\[(\d+)\]/
这就像说“查找字符串elements[x][y]
,其中x != ']'
和y is a number
”
然后,您可以对字符串使用match
方法来捕获匹配项。正则表达式中的括号将捕获字符的子分组(例如上例中的y
)。
演示:
$('div').each(function(i,e){
var attr = $(e).attr('data-var');
var matches = attr.match(/elements\[[^\]]+\]\[(\d+)\]/);
console.log(matches[1])
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-var="elements[1587f9aa-8a9e-4058-b1f3-d358041430c9][0][element-0][value]"></div>
<div data-var="elements[1587f9aa-8a9e-4058-b1f3-d358041430c9][1][element-1][value]"></div>
答案 1 :(得分:2)
只需将字符串与][
分开,然后将元素放在位置1
var string = 'elements[1587f9aa-8a9e-4058-b1f3-d358041430c9][0][element-0][value]';
console.log(string.split('][')[1]);
答案 2 :(得分:0)
这是一个简单的解决方案:
使用jQuery获取字符串(括号中的数字除外),然后将其替换为空char:
string.replace(/elements\[[^\]]+\]\[|\]\[element.*/g, "");