[英]Javascript Regex multiline not working
Given the code: 给定代码:
var regExGroup = new RegExp("\\[group(.*)\\][\s\S]*\\[/group]", 'gi');
var regExResGroup;
while ((regExResGroup = regExGroup.exec(result)) !== null) {
console.log(regExResGroup[0]);
}
And the test data (the value of result
): 和测试数据(
result
值):
[comment]This is a comment[/comment][group title="This" description="That"]
[comment]This is a comment[/comment]
[event]
[condition object="Touch"]On touch[/condition]
[condition object="Touch"]On touch[/condition]
[action object="Sprite"]Destroy[/action]
[action object="Sprite"]Destroy[/action]
[comment]This is a comment[/comment]
[event]
[condition object="Touch"]On touch[/condition]
[condition object="Touch"]On touch[/condition]
[action object="Sprite"]Destroy[/action]
[action object="Sprite"]Destroy[/action]
[/event]
[/event]
[group title="This" description="That"]
[event]
[condition object="Touch"]On touch[/condition]
[condition object="Touch"]On touch[/condition]
[action object="Sprite"]Destroy[/action]
[action object="Sprite"]Destroy[/action]
[event]
[condition object="Touch"]On touch[/condition]
[condition object="Touch"]On touch[/condition]
[action object="Sprite"]Destroy[/action]
[action object="Sprite"]Destroy[/action]
[/event]
[/event]
[/group]
[/group]
Why is no match being found? 为什么找不到匹配项?
Multiline is m
, not g
. 多行是
m
,不是g
。 g
is for global, to match all instances of the regular expression. g
表示全局,用于匹配正则表达式的所有实例。 Otherwise it would only match once . 否则,它将只匹配一次 。
new RegExp("\\[group(.*)\\][\s\S]*\\[/group]", 'gim');
I guess you could try one of these quoting/delimiter options 我想您可以尝试使用这些引号/定界符选项之一
# (?s)\[group(.*?)\].*?\[/group\]
# /(?s)\[group(.*?)\].*?\[\/group\]/
# '/(?s)\[group(.*?)\].*?\[\/group\]/'
# "(?s)\\[group(.*?)\\].*?\\[/group\\]"
#
(?s)
\[group
( .*? )
\]
.*?
\[/group\]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.