Javascript split() Regex 表达式在 Chrome 中返回不需要的逗号
Javascript split() Regex expression returns unwanted comma in Chrome
我写了一个简单的正则表达式来确定文本框是否只填充数字。
document.getElementById("id").value.split(/'d/).length;
如果这一行的结果等于 0,那么语句是正确的,但似乎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(['', '', '', '', ''])
",,,,"
一种选择是使用像这样的正则表达式:
var re = /^'d+$/;
或者简单地否定isNaN()
以在数字检查上得到真或假:
// dunno if you have to parseInt() first, haven't tested it
if(!isNaN(document.getElementById("id").value)){
// do stuff
}
发生这种情况的原因是,如果您拆分一个空字符串,您仍然会得到一个空字符串。
"".split("abc") // returns [""]
所以数组有一个元素。这是正确的行为。
当您使用原始字符串中不需要的字符串拆分不同的字符串时,也会发生相同的行为:
"dsfsf".split("123") // returns ["dsfsf"]
这在IE上"工作"的原因是该浏览器中的实现实际上是错误的,因为该函数应始终返回n + 1个元素(即至少原始字符串)。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 如何在不需要单击按钮的情况下获取选项的值
- Javascript不需要的关闭行为
- 删除客户端浏览器上不需要的内容
- Firefox使用JQuery返回不正确的JSON
- 不允许在字段中输入不需要的字符
- 不需要的JSON响应
- 如何使图像适合TD,而不需要包装在不同的屏幕分辨率上
- 返回并重新加载页面时显示不需要的服务器端警报消息
- find()方法返回具有不需要的属性的对象
- Javascript split() Regex 表达式在 Chrome 中返回不需要的逗号
- 为什么 => { } 中的代码需要返回,而 => 中的内容不需要
- text在迭代JavaScript XML中返回不需要的空文本值的内容
- 为什么$http.Get不需要返回任何东西
- js返回不需要的值
- ScriptBundle+Optimization返回不需要的数字
- RegEx返回SyntaxError:无效正则表达式:/*/:不需要重复
- 用多个正则表达式模式拆分字符串会返回不需要的值
- 如何从一个页面返回到前一个页面,而不需要使用jquery或ajax单击任何按钮
- Javascript计算排列——为什么当我不复制数组时,我的代码返回不需要的解决方案?