我是正则表达式和JavaScript的新手。
我正在尝试使用正则表达式创建源文件的所有导入文件的数组。
在导入语句之前,还会有一个"@"符号。例如:
如果文件看起来像
。
@import文件1,文件2,文件3;
整数 i=6;
@import文件4;
。
然后我需要一个带有 [文件1,文件2,文件3,文件4] 的数组
到目前为止,我试图创建Reg Exp本身,但没有成功。
有什么帮助吗?
谢谢编辑以使事情更清晰
问题(+演示)的复杂解决方案:
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>
运行我的演示,看看结果。
String.prototype.split()
与RegExp
/@import|,|;|s/
一起使用,Array.prototype.filter()
与参数一起使用Boolean
text.split(/@import|,|;|s/).filter(Boolean)
普罗提 http://plnkr.co/edit/OpLBFMehRjC1sm1GA9BL?p=preview