遍历包含正则表达式的 JavaScript 对象变量
iterate over javascript object variables containing regex expressions
我想知道这是否可能。我正在尝试迭代包含正则表达式的对象,如下所示:
var formats = {
AUS:"/^'D*0('D*'d){9}'D*$/",
UK: "/^'D*0('D*'d){9}'D*$/"
};
var matched = false;
for (var i in formats) {
if (!matched) {
var format = formats[i];
matched = value.match(formats[i]);
}
}
我很欣赏澳大利亚和英国的表达是相同的价值,但这只是为了证明这个概念。
我匹配的值是0423887743,当我执行以下操作时它可以工作:
value.match(/^'D*0('D*'d){9}'D*$/);
将其更改为:
var formats = {
AUS:/^'D*0('D*'d){9}'D*$/,
UK: /^'D*0('D*'d){9}'D*$/
};
你拥有它的方式,它是字符串而不是正则表达式。
string.match 将正则表达式作为参数,但您传递的是一个字符串。
您可以在对象中存储正则表达式:
var formats = {
AUS: /^'D*0('D*'d){9}'D*$/,
UK: /^'D*0('D*'d){9}'D*$/
};
或者从字符串创建正则表达式:
var format = new RegExp(formats[i]);
matched = value.match(format);
我不确定你为什么需要这么奇怪的正则表达式,这是工作代码:
var formats = {
AUS:"^0[0-9]{9}$",
UK: "^0[0-9]{9}$"
};
var matched = false;
var value = '0423887743';
for (var i in formats) {
if (!matched) {
var format = formats[i];
var re = new RegExp(formats[i]);
matched = ( re.exec(''+value) != null );
}
}
alert(matched);
注意:此代码假设您的格式是字符串,因此您不需要/在开头和结尾,如果您需要它们 - 存储不带引号,它将是正则表达式
相关文章:
- 如何在HTML中显示服务器对象变量
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- Javascript 方法看不到对象变量
- JavaScript对象范围-在对象方法中使用对象变量
- 将对象(变量)传递给angularjs指令
- 对象变量在 JavaScript 中是不可访问的
- 无法访问公共JavaScript对象变量
- 可以't获取具有“t”的对象变量;这个“;由setTimeout()函数调用的对象函数中的属性
- Javascript:如何在回调中设置父对象变量
- 从方法内部设置对象变量
- 访问对象中的对象变量
- JavaScript 中的对象变量
- 从 json 代码中删除 javascript 对象变量名称文本
- 将变量传递到对象变量中
- JavaScript 如何重新识别事件对象变量
- 从对象变量中获取子节点
- 使对象变量在所有“更深”的范围内都是可访问的
- 从方法 JavaScript 访问对象变量
- 如何在 javascript 中保存对象变量的状态
- 无法访问IE和Mozilla中javascript的类对象变量