在字符串中查找字符

时间:2017-05-25 16:50:56

标签: javascript jquery

我有一个HTML输入元素的属性,其值如下:

elements[1587f9aa-8a9e-4058-b1f3-d358041430c9][0][element-0][value]

如何在breckets [0]内找到并获取一个数字? 这个数字以及字符串的左右部分都会改变,所以我不能只提取第48个(或其他)符号。 该模式将始终相同,即使[element-?][value]部分也是相同的。

3 个答案:

答案 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, "");

工作示例:http://regexr.com/3g1l3