我是regex和javascript的新手
我正在尝试使用正则表达式创建源文件的所有导入文件的数组
在导入声明之前,还会有一个“@”符号。例如:
如果文件看起来像
...
@import file1,file2,file3;
int i = 6;
@import file4;
...
然后我需要一个带有[file1,file2,file3,file4]
的数组到目前为止,我试图创建reg exp本身但没有成功
对此有何帮助?
谢谢
编辑以使事情更清晰
答案 0 :(得分:0)
您可以String.prototype.split()
使用RegExp
/@import|,|;|\s/
,Array.prototype.filter()
使用参数Boolean
text.split(/@import|,|;|\s/).filter(Boolean)
答案 1 :(得分:0)
您的问题的复杂解决方案(+演示):
function run() {
var
re = /(?:@import)\s+([^;]+)/igm,
str = document.getElementById('demo').value,
arr = [];
while (result = re.exec(str)) {
arr = arr.concat(result[1].split(/[,\s]+/))
}
//console.log(arr);
document.getElementById('result').innerHTML = JSON.stringify(arr);
}

<p>
<textarea id="demo" cols="50" rows="15">
// .....
@import file1,file2, file3;
int i=6;
@import file4;
// .....
</textarea>
</p>
<p>
<span id="result" style="color:green;"></span>
</p>
<p>
<input type="button" value="RUN" onclick="run()">
</p>
&#13;
运行我的演示,查看结果。