我写了一个简单的Regex来确定文本框是否仅用数字填充。

document.getElementById("id").value.split(/\d/).length;


如果此行的结果等于0,则该语句为true,但是当value.split(/\d/)时,alert()似乎返回逗号,因此长度为1(alert()仅返回将其用于value时所写的内容)

在ie中,这是完美的,但是在chrome中,我得到一个逗号。为什么会发生这种情况,我的正则表达式不正确?我也尝试了/^\d+$/,但是得到了相同的结果。

最佳答案

使用RegExp.test方法更合适:

/^\d+$/.test(document.getElementById('id').value)


例如:

> /^\d+$/.test('1234')
true
> /^\d+$/.test('12,34')
false
> /^\d+$/.test('abcd')
false




.split(/\d/)返回n + 1个项目的数组。 (n =包含的位数):

> '1234'.split(/\d/)
["", "", "", "", ""]
> '1234'.split(/\d/).length
5
> 'asdf'.split(/\d/)
["asdf"]
>
'asdf'.split(/\d/).length
1




为什么得到,,,alert将参数转换为字符串:

> String('1234'.split(/\d/)) // === String(['', '', '', '', ''])
",,,,"

关于javascript - Javascript split()正则表达式在Chrome中返回不需要的逗号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19906297/

10-11 22:29
查看更多