源文本为:
gi0/1 1G-Fiber -- -- -- -- Down -- -- Access
gi0/2 1G-Fiber -- -- -- -- Down -- --
gi0/3 1G-Fiber -- -- -- -- Down -- --
gi0/4 1G-Fiber -- -- -- -- Down -- --
gi0/5 1G-Fiber -- -- -- -- Down -- --
gi0/0/1 1G-Fiber -- -- -- -- Down -- -- Access
gi0/0/2 1G-Fiber -- -- -- -- Down -- --
gi0/0/3 1G-Fiber -- -- -- -- Down -- --
gi0/0/4 1G-Fiber -- -- -- -- Down -- --
gi0/0/5 1G-Fiber -- -- -- -- Down -- --
我的工作代码是:
var re = /(([w]{2})[/d]{1,})s+([w-.s]+){1,}[rn]/ig;
while ( (MyArray = re.exec(text)) != null ){
//在这里,我想要获得具有以下值的数组(MyArray)
[0] [matched string]
[1] gi0/1 (gi0/0/1)
[2] gi
[3] 1G-Fiber
[4] --
[5] --
[6] --
[7] --
[8] Down
[9] --
[10] --
[11] Access (only for 1st and 6th row)
//但是获得(MyArray)
[0] [matched string]
[1] gi0/1 (gi0/0/1)
[2] gi
[3] "s" OR "empty"
}
在线示例-http://regexr.com?31ilv
有人能帮我吗?
<script type="text/javascript">
var subject = "gi0/1 1G-Fiber -- -- -- -- Down -- -- Access";
//var subject = "gi0/1 1G-Fiber -- -- -- -- Down -- --";
var regex = /([^s]*)s([^s]*)s([^s]*)s([^s]*)s([^s]*)s([^s]*)s([^s]*)s([^s]*)s([^s]*)s*([^s]*)/;
var result = regex.exec(subject);
document.write("<ol>");
for (var i = 1; i < result.length; i++) {
document.write("<li>'<i>" + result[i] + "</i>'</li>");
}
document.write("</ol>");
</script>
如果源字符串没有"Access"后缀,则此regex将创建一个最后一个元素为空的数组。另一种策略可以是使用String.search函数并对源字符串进行迭代。