如果我在firefox中尝试此代码,它可以正常工作
var words = String.split(new RegExp(/[\-\s]/));
words // ["/[\-\s]/"]
IE中的相同代码没有!
var words = String.split(new RegExp(/[\-\s]/));
words "Object doesn't support property or method 'split'"
为什么呢?什么是在IE中修复它的最佳方法?
答案 0 :(得分:4)
<强>更新强>:
问题是您的参数被称为string
(全部小写),但是当您尝试拆分它时,您正在使用String
(带有初始资本)。 JavaScript是一种区分大小写的语言string !== String
。
所以改变这个:
var words = String.split(new RegExp(/[\-\s]/)),
到此:
var words = string.split(new RegExp(/[\-\s]/)),
// ^--- lower case s
原始回答:
split
是String.prototype
上的函数(实际上是字符串实例),而不是String
本身(构造函数)。
所以:
var words = "some words and hyphenated-words here".split(/[\-\s]/);
console.log(words); // ["some", "words", "and", "hyphenated", "words", "here"]
旁注:您不必在/[\-\s]/
中包装正则表达式文字(new RegExp(...)
),除非您正在处理旧的错误 问题在一些实现中围绕全局标志和跨函数调用缓存/重用本地文字,这与split
无关,因为你没有使用g
标志。< / p>
答案 1 :(得分:1)
我认为String
对象本身没有split()
方法。 split()
是String
个实例的方法:
'a b c'.split(/\s/); //returns ['a', 'b', 'c']
答案 2 :(得分:0)
split
方法不应该应用于String类,而应该应用于以下字符串:
"abc-123 def-456".split(/[\-\s]/);