我收到一个奇怪的错误“无效的量化器”...有人可以帮我吗?
HTML
<input type="text" value="5+5" id="test"/>
JS
ups = {};
ups['2'] = new Array();
ups['2']['cmd'] = '#(\-|\+|\*|\/|)[0-9](,|[0-9]|)(\-|\+|\*|\/)[0-9]#gi';
var inp_val = $('#test').val();
if (inp_val.match(ups['2']['cmd']))
{
$('body').append('<br />OK');
}
答案 0 :(得分:4)
在Javascript中,正则表达式应写为
var re = /thepatterns/mod;
即
ups = {};
ups['2'] = new Array();
ups['2']['cmd'] = /(\-|\+|\*|\/|)[0-9](,|[0-9]|)(\-|\+|\*|\/)[0-9]/gi;
此外,它可以简化为
ups = {2: {cmd: /([-+*\/])\d([,\d]?)([-+*\/])\d/g }};
无效量词的原因是,与PHP不同,\
后跟无法识别的字符将导致该字符没有\
:
'\p\q' == 'pq'
'\p\q' == '\\p\\q'
因此,您的字符串将被解释为
'#(-|+|*|/|)[0-9](,|[0-9]|)(-|+|*|/)[0-9]#gi'
这是一个无效的正则表达式,因为+
(量词)之前没有任何模式。