[英]Firefox Javascript regex to get array of numbers within square brackets but excluding brackets
样本输入
var abc = "blah blah [abc] , [123] [ab12], [456] [cdef] 789 ghi000 "
预期产量
["123", "456"]
我正在尝试编写只与方括号内的数字匹配的正则表达式,并返回这些数字的数组(不包括[])。
我尝试过的正则表达式使用了backbehind,因此它可以在Chrome浏览器上运行,但无法使用Firefox。 后来我发现firefox还不支持lookbehind(访问https://bugzilla.mozilla.org/show_bug.cgi?id=1225665 )。
abc.match(/(?<=\[)(\d+)/g);
我在Chrome 76上获得了预期的输出:
["123", "456"]
但在Firefox 68上出现错误:
SyntaxError: invalid regexp group
我该如何编写同时适用于两者的正则表达式并生成预期结果。
您可以使用match
和map
var abc = "blah blah [abc] , [123] [ab12], [456] [cdef] 789 ghi000 " let output = abc.match(/\\[\\d+\\]/g).map(m=>m.replace(/\\[(\\d+)\\]/g, "$1")) console.log(output)
或者您可以使用exec
var regex1 = /\\[(\\d+)\\]/g var str1 = "blah blah [abc] , [123] [ab12], [456] [cdef] 789 ghi000 " var array1; while ((array1 = regex1.exec(str1)) !== null) { console.log(`Found ${array1[1]}`); }
使用捕获组,例如:
var abc = "blah blah [abc] , [123] [ab12], [456] [cdef] 789 ghi000 ";
Array.from(abc.matchAll(/\[(\d+)\]/g)).map(m => m[1])
matchAll (注意浏览器的兼容性)查找每次出现的[NNN]
并将方括号内的数字捕获为match[1]
。
Array.from()
将matchAll
返回的迭代器转换为数组,然后可以对其进行处理以提取捕获。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.