显然,这是一个RTFM问题,但是在我反复这样做之后,我简直无法运转该死的东西,因此有时候寻求帮助是有意义的:
var text = "KEY:01 VAL:1.10,KEY:02 VAL:2.20,KEY:03 VAL:3.30";
var pattern = '/KEY:(\S+) VAL:([^,]+)/g';
//var pattern = '/KEY:(\S+) VAL:(.?+)(?:(?=,KEY:)|$)/g';
//var pattern = '/KEY:(\S+) VAL:(.+)$/g';
//pattern.compile(pattern);
var kv = null;
var row = 0, col = 0;
while((kv = pattern.exec(text) != null))
{
row = kv[1].charAt(0) - '0';
col = kv[1].charAt(1) - '0';
e = document.getElementById('live').rows[row].cells;
e[col].innerHTML = kv[2].slice(0, kv[2].indexOf(","));
}
kv [1]应该为“ 01”
kv [2]应该为“ 1.10”
...当然kv []应该列出'text'的所有值
填写称为“实时”的表格。
但是我无法成功完成
pattern.exec()
的工作。小故障在哪里?
最佳答案
首先,RegExp的分隔符应为/
,无需将其放入'
分隔符。也就是说,要使您的exec
正常运行,您应该具有:
var pattern = /KEY:(\S+) VAL:([^,]+)/g;
其次,您要为不需要的
kv
分配一个布尔值。很显然,while只会将true
赋值给null
,因此这是多余的。相反,您只需要:while (kv = pattern.exec(text)) {
那应该使您的代码按您的意愿工作。
关于javascript - Javascript RegEx之谜(适用于贫穷的C程序员),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9656731/