简体   繁体   English

Javascript Regex多行无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM