Javascript TypeError:无法获取属性的值';测试';:对象为null或未定义
我有一个通过一组正则表达式计算字符串的函数。这些正则表达式被包装为Javascript TypeError:无法获取属性的值';测试';:对象为null或未定义,javascript,angularjs,internet-explorer,internet-explorer-8,Javascript,Angularjs,Internet Explorer,Internet Explorer 8,我有一个通过一组正则表达式计算字符串的函数。这些正则表达式被包装为charRules中自己的对象 如果字符串无效,则返回false,否则返回true 有效字符串示例:12345678901233K 无效字符串示例:!@$%^&*&H5 当用户在文本输入中输入值时,IE8在控制台中抛出一个错误 TypeError:无法获取属性“test”的值:对象为null或未定义 IE9+、Chrome、Firefox和Safari都能正常工作 该逻辑作为指令实现。这是与范围相关的核心逻辑
charRules
中自己的对象
如果字符串无效,则返回false,否则返回true
有效字符串示例:12345678901233K
无效字符串示例:!@$%^&*&H5
当用户在文本输入中输入值时,IE8在控制台中抛出一个错误
TypeError:无法获取属性“test”的值:对象为null或未定义
IE9+、Chrome、Firefox和Safari都能正常工作
该逻辑作为指令实现。这是与范围相关的核心逻辑
scope.validate = function(value) {
// Letters and special characters not allowed per country.
var charRules = {
br: {
haveLetters: /[a-zA-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\\#{}\[\]:";'<>?,]/,
minMaxLength: /^.{12,25}$/
},
cl: {
haveLetters: /[a-jl-zA-JL-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\\#{}\[\]:";'<>?,\/]/,
minMaxLength: /^.{12,25}$/
},
mx: {
haveLetters: /[]/,
haveSpecials: /[!@$%^&*()_+|~=`\\#{}\[\]:";'<>?,\/.-]/,
minMaxLength: /^.{12,25}$/
},
pr: {
haveLetters: /[a-zA-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\\#{}\[\]:";'<>?,\/.]/,
minMaxLength: /^.{12,25}$/
}
};
if (charRules[country]) {
if (charRules[country].haveLetters.test(value) || charRules[country].haveSpecials.test(value) || !charRules[country].minMaxLength.test(value)) {
return false;
} else {
return true;
}
}
};
scope.validate=函数(值){
//每个国家/地区不允许使用字母和特殊字符。
var charRules={
比尔:{
haveLetters:/[a-zA-Z]/,
haveSpecials://[!@$%^&*()\+\\\[\]:“;”?,]/,,
minMaxLength:/^.{12,25}$/
},
cl:{
haveLetters:/[a-jl-zA-jl-Z]/,
haveSpecials://[!@$%^&*()\\\\\\[\]:“;”?,\/],
minMaxLength:/^.{12,25}$/
},
mx:{
haveLetters://[]/,,
haveSpecials://[!@$%^&*()\\\\\\[\]:“;”?,\/.-]/,,
minMaxLength:/^.{12,25}$/
},
公共关系:{
haveLetters:/[a-zA-Z]/,
haveSpecials://[!@$%^&*()\\\\\\[\]:“;”?,\/.]/,
minMaxLength:/^.{12,25}$/
}
};
如果(charRules[国家]){
if(charRules[country].haveLetters.test(value)| | charRules[country].haveSpecials.test(value)| | |!charRules[country].minMaxLength.test(value)){
返回false;
}否则{
返回true;
}
}
};
country
变量是全局定义的。适用于HTML的指令是rut=“mx”
它适用于这个HTML
关于什么原因导致字符串值不能仅在IE8中解释,您有什么想法吗?在上述if条件下,请尝试
null!=charRules[country].haveLetters.exec(value) || null!=charRules[country].haveSpecials.exec(value) || (value.length>12 && value.length<25)
null=charRules[country].haveLetters.exec(值)| | null=charRules[country].haveSpecials.exec(value)| |(value.length>12&&value.lengthInternet explorer 8抛出:
正则表达式中应为']'
尝试在正则表达式中使用空括号时
/[]/
您应该尝试更具体地使用不希望在其中匹配的字符
诸如此类,根据您的需要,您可能需要添加更多排除条件:
/[^\w^\w]/
这个解决方案是合理的。谢谢你的建议。请投票+