Javascript 与通配符匹配

Posted

技术标签:

【中文标题】Javascript 与通配符匹配【英文标题】:Javascript match with wildcard 【发布时间】:2011-09-09 22:40:28 【问题描述】:

您好,感谢您的关注。

我需要使用 javascript 从表单中获取所有表单输入,输入命名如下:

<input name="site[1]" type="text" size="3" id="sitesinput" value="0" />
<input name="site[2]" type="text" size="3" id="sitesinput" value="0" />
<input name="site[3]" type="text" size="3" id="sitesinput" value="0" />
<input name="site[4]" type="text" size="3" id="sitesinput" value="0" />

......

<input name="site[10]" type="text" size="3" id="sitesinput" value="0" />

我有以下内容可以提取它们并将值添加在一起,但它不起作用,我做错了什么:

function site_change() 
         var sites= document.getElementById('sitesinput').value;    
         var sum= 0;
         var inputs= document.getElementById('inputsite').getElementsByTagName('input');
         for (var i= inputs.length; i-->0;) 
            if (inputs[i].getAttribute('name').match(/^site[\d+$]/))
            
             var v= inputs[i].value.split(',').join('.').split(' ').join('');
             if (isNaN(+v))
                 alert(inputs[i].value+' is not a readable number');
             else
                 sum+= +v;
            
         
         var phones= document.getElementById('phonesinput').value;
         document.getElementById('siteresult').innerhtml = phones-sum;
    ;

Match函数错了吗?

谢谢, B.

【问题讨论】:

为什么你所有的输入都有相同的ID?为什么要创建变量sites 然后不使用它? 对,您应该为所有人设置不同的 id,或者使用包含所有这些的 id 的 division,然后使用 name 属性创建 select 【参考方案1】:

您的正则表达式有点偏离(使用[] 阻止字符,但您实际上想找到方括号,因此需要对其进行转义。$ 需要在末尾)。试试:

.match(/^site\[\d+\]$/)

【讨论】:

辛苦了 - 谢谢!顺便说一句 - 它们的 ID 并不相同 - 懒惰的复制和粘贴我很害怕,并且 var 站点是在测试某些东西时遗留下来的!!!!!!

以上是关于Javascript 与通配符匹配的主要内容,如果未能解决你的问题,请参考以下文章

json站点地图中的Javascript部分通配符匹配

JavaScript基础第二节

使用索引与通配符匹配来查找部分匹配

键盘侠Linux教程| 正则表达式与通配符

[Shell]正则表达式与通配符

javascript正则表达式