显然,这是一个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/

10-12 06:34