[英]How can I capture word by Regex
我想从字符串中捕获数组键。
这是我的话: message[0][generic][0][elements][0][default_action][url]...
我想在message[0][generic][0][elements][0]
之后捕获数组键,预期的结果是default_action
和url
等。
我尝试了以下模式,但没有用。
message\\[0\\]\\[generic\\]\\[0\\]\\[elements\\]\\[0\\](?=\\[(\\w+)\\])
:仅捕获default_action
; \\[(\\w+)\\]
:它捕获所有数组键,但包含0
, generic
, elements
... JavaScript是否有任何使结果数组逆的正则表达式模式,例如[url, default_action]
?
您可以替换字符串中不需要的部分,然后获取所有其他键。
var string = 'message[0][generic][0][elements][0][default_action][url][imthird]'; var regexp = /message\\[0\\]\\[generic\\]\\[0\\]\\[elements\\]\\[0\\]/ var answer = string.replace(regexp,'').match(/[^\\[\\]]+/g) console.log(answer);
使用String.prototype.split()
和Array.prototype.slice()
的解决方案具有以下功能:
var s = 'message[0][generic][0][elements][0][default_action][url]...', result = s.split(/\\]\\[|[\\[\\]]/g).slice(-3,-1); console.log(result);
要提取任意数量的键并反转结果数组中元素的顺序:
str = "message[0][generic][0][elements][0][default_action][url]"; res = str.match(/\\[([^\\d\\]]+)\\](?=\\[[^\\d\\]]*\\]|$)/g) .map(function(s) { return s.replace(/[\\[\\]]/g, "") }) .reverse(); console.log(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.