React环境下支持大小写扩展名的正则表达式修改需求
解决React中正则匹配任意大小写扩展名的问题
修正后的正则表达式
如果使用正则字面量写法:
/^(?=[\S\s]{1,252}$)[\S\s ]*\.(jpeg|jpg|pdf|png|docx|doc|txt|xls|xlsx)$/i
如果使用RegExp构造函数(React中动态创建正则时常用):
new RegExp('^(?=[\\S\\s]{1,252}$)[\\S\\s ]*\\.(jpeg|jpg|pdf|png|docx|doc|txt|xls|xlsx)$', 'i')
关键说明
- 原正则里的
[a-zA-Z\S\s]属于冗余写法,[\S\s]已经能匹配所有字符(包括字母、符号、换行等),直接简化即可。 - 你之前尝试加
/i未生效,大概率是因为用字符串定义正则时错误地把/i写在了字符串内部,而非作为RegExp构造函数的第二个参数;若用字面量写法,/i必须放在正则末尾的斜杠外侧。 - 无需使用
(?i)这类内嵌标志,直接启用全局不区分大小写标志i即可让整个正则忽略大小写,自然覆盖扩展名的匹配需求。
可匹配示例
该正则支持以下格式的文件名:
abc.jpgabc.JPGabc.JpgMyDocument.DOCXmonthly-report.Pdf
同时保留了原正则的长度限制(1-252字符)和指定扩展名范围的要求。
内容的提问来源于stack exchange,提问作者prabhat
相关产品推荐
相关产品推荐

