动态替换RegExp对象而不使用斜杠

时间:2012-08-16 14:13:54

标签: jquery regex

我有动态创建的RegExp对象(在file upload plugin中)

的问题

这是插件的初始化代码:

$('#fileupload').fileupload('option', {
    acceptFileTypes: /(\.|\/)(doc|pdf)$/i
});

该代码更改了正则表达式:

$('#files-list').change(function() {
   $('#fileupload').fileupload(
            'option',
            'acceptFileTypes',
            new RegExp('(\.|\/)('+$(this).find(":selected").attr('f-ext')+')$/i')
                );
            });

并在该正则表达式的开头和末尾添加/字符。

见下图。第一&第二行是插件初始化后的第3行和第4行。这导致文件名验证失败。

enter image description here

如何解决?

2 个答案:

答案 0 :(得分:2)

要使用不区分大小写的修饰符,您应该执行下一步

new RegExp( regexp_expression , 'i' );

答案 1 :(得分:2)

JS regex的修饰符,在构造函数中提供时,应单独指定:

...new RegExp('(\.|\/)('+$(this).find(":selected").attr('f-ext')+')$', 'i');

general syntax是:

var newRegex = new RegExp(pattern [, flags]);