JavaScript正则检测Excel工作表名称非法字符的实现问题
正确实现方案
你要匹配的7个特殊字符中包含多个正则语法保留字符,需要正确转义后放在字符组中即可实现任意命中的需求,直接使用正则字面量的写法如下:
// 匹配任意Excel工作表禁用字符的正则 const invalidSheetNameRegex = /[\/\\\[\]*:?]/ // 检测函数封装 function checkInvalidSheetName(str) { return invalidSheetNameRegex.test(str) }
测试用例
checkInvalidSheetName("三季度销售数据")→ 返回false,无禁用字符checkInvalidSheetName("三季度/销售数据")→ 返回true,包含禁用字符/checkInvalidSheetName("[内部]销售汇总")→ 返回true,包含禁用字符[、]checkInvalidSheetName("10月:目标?")→ 返回true,包含禁用字符:、?
常见踩坑说明
如果你之前生成的正则无法生效,大概率是转义层数没处理对:如果用RegExp构造函数生成正则,参数为字符串类型,字符串本身的反斜杠需要额外转义,对应构造函数写法如下:
const invalidSheetNameRegex = new RegExp("[\\/\\\\\\[\\]*:?]")
内容的提问来源于stack exchange,提问作者Daniel Soriano
相关产品推荐
相关产品推荐

