RegEx-双方括号内的值
RegEx - Value inside double square brackets
我试图提取一个位于双方括号内的值:[[x]]
,同时忽略位于单方括号中的所有其他值:[y]
。
注意: 此RegEx将在JavaScript中使用,据我所知,JavaScript不支持Looking behind
例如,以这3个字符串为例
[[32]] [Test] Lorem Ipsum
[[16]] Lorem Ipsum
[[2]] Test [BUG]
我想提取:32,16,2
这就是我尝试过的
测试1:
'[([0-9]+)']
http://www.regexr.com/39sm3
将只返回包含内方括号的值,例如[32]、[16]、[2]。然后我可以根据结果再做一次RegEx,但我想知道如何做一次。
测试2:
'[.*?']]
http://www.regexr.com/39sm0
将返回带有双方括号的值,例如[[32]]、[[16]]、[[2]]
给定:
var s = '[[32]] [Test] Lorem Ipsum [[16]] Lorem Ipsum [[2]] Test [BUG]';
您可以使用匹配一个或多个后跟"]]"的数字,但不包括匹配中的"]]":
s.match(/'d+(?=']'])/g) // ["32", "16", "2"]
或者,如果前瞻性不可用,您可以使用:
s.match(/'['[('d+)']']/g).map(function(v){return v.replace(/'[+|']+/g,'');})
不过,如果地图可用,那么展望未来也可能可用。如果输入是多行,您可能还需要m标志。
您可以使用捕获组来匹配模式中的子字符串。
在JavaScript中(括号中定义了捕获组):
var pattern = /'['[([0-9]+)']']/g;
var string = "[[1]] [2] [[3]] [4] [[five]]";
var numbers = [];
while (match = pattern.exec(string)) {
numbers.push(match[1]); //Get capturing group 1. This would be e.g. "1"
// NOTE: match[0] contains the entire match. e.g. "[[1]]"
}
console.log(numbers)
控制台输出:["1", "3"]
请参阅http://www.regular-expressions.info/refcapture.html获取有关捕获组的更多信息。
怎么样
'[{2}('d+)']{2}
告诉Regex您想要{2}
[
,然后是一些'd
数字,然后是另一个{2}
]
您尝试过/'['[([0-9]+)']']/
吗?当然,假设您只期望双方括号内的数字。
var exp = /'['[([0-9]+)']']/;
var number = exp.exec("[[293]] Test line")[1]
number
应返回'293'
。
let str = 'test [[1]], test [[2]], xyz, abc, <p>Hi</p> test [[3]].'
let result = str.match(/'['[('d+)']']/g).map((item) => {
return parseInt(item.replace(/['[']]/g, ''))
})
console.log(result)
使用纯正则表达式的另一种方法是使用查找。
(?<='['[)[0-9]+(?=']'])
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- Regex代码只允许一个空格
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Regex匹配除“”之外的所有字符;.js”;
- RegExp:匹配Javascript中除regex值之外的所有内容
- Javascript RegEx validator
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 制作一个regex来验证只有一个数字的字符串
- RegEx JavaScript:数字后的符号提取
- Regex查找用方括号括起来的单个单词
- JavaScript Regex 用于匹配嵌套方括号内的任何单词
- Regex用逗号分隔,但不在方括号中,也不在括号中
- Regex将每个字符替换为另一个字符,'s在方括号中
- Javascript/regex:删除方括号之间的文本
- Regex匹配@,后面跟着包含数字的方括号
- 简单的JavaScript Regex替换不能在带有方括号的令牌上工作
- Javascript RegEx,在方括号之间查找文本
- Regex删除方括号和前面方法名之间的内容
- 当字符串包含方括号时,RegEx中断
- 使用Regex表达式替换所有逗号和方括号