<script type="text/javascript">
var re = /([a-zA-Z1-9]*)\.(((P|p)(D|d)(F|f))|((d|D)(o|O)(c|C)))/;
var filename = "abcd.PdF";
document.writeln(re.test(filename)); // true in IE 7
</script>
Можете ли вы предоставить тестовый пример, который не работает в IE 7, но работает в Firefox?
Вы можете заменить все эти or
s на /([a-zA-Z1-9]*)\.(([Pp][Dd][Ff])|([dD][oO][cC]))/
или /([a-z1-9]*)\.((pdf)|(doc))/i
.
У Джеймса есть хорошее замечание: если предполагается, что оно соответствует значению в <input type="file">
, Internet Explorer может включать путь, а Firefox - нет (я знаю, что это происходит на сервере, это может быть и на клиенте) .
Хороший совет - проверить значение, которое вы пытаетесь сопоставить со своим регулярным выражением, и убедиться, что оно соответствует вашим ожиданиям.