gpt4 book ai didi

javascript - 在 javascript 中使用正则表达式捕获

转载 作者:行者123 更新时间:2023-11-29 22:03:28 25 4
gpt4 key购买 nike

我有一个类似“ListUI_col_order[01234567][5]”的字符串。我想从字符串中捕获两个数字序列。方括号之间的最后部分可能包含 2 位数字,而第一个数字序列始终包含 8 位数字(当然数字是动态变化的。)我在 javascript 中这样做,第一部分的代码很简单:我得到字符串中只有 8 位序列:

var str = $(this).attr('id');
var unique = str.match(/([0-9]){8}/g);

获取第二部分对我来说有点复杂。我不能简单地使用:

var column = str.match(/[0-9]{1,2}/g)

因为这将匹配我们示例中的 '01'、'23'、'45'、'67'、'5',所以很清楚。虽然我能够获得我需要的信息作为列 [4],因为第一部分总是包含 8 位数字,但我想要一种更好的方法来检索最后一个数字。所以我定义了上下文,我可以告诉正则表达式我正在寻找一个 1 位或 2 位数字,它前后都有方括号:

var column = str.match(/\[[0-9]{1,2}\]/g)
// this will return [5]. which is nearly what I want

因此,为了仅获取数字数据,我使用括号来仅捕获如下数字:

 var column = str.match(/\[([0-9]){1,2}\]/g)
// this will result in:
// column[0] = '[5]'
// column[1] = [5]

所以我的问题是如何匹配“[5]”但只捕获“5”?我只有括号之间的 [0-9],但这仍然会捕获方括号

最佳答案

您可以一次获得两个数字:

var m = str.match(/\[(\d{8})\]\[(\d{1,2})\]$/)

对于您的示例,这使得 [[01234567][5]", "01234567", "5"]

要将两个匹配项都作为数字,您可以这样做

if (m) return m.slice(1).map(Number)

构建 [1234567, 5]

关于javascript - 在 javascript 中使用正则表达式捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22295943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com