我有正则表达式:
var reValid = /^s*(?:'[^'\]*(?:\[Ss][^'\]*)*'|[^,'s\]*(?:s+[^,'s\]+)*)s*(?:,s*(?:'[^'\]*(?:\[Ss][^'\]*)*'|[^,'s\]*(?:s+[^,'s\]+)*)s*)*$/;
这验证了 CSV 文件,但我希望能够使用任何分隔符修改分隔符 (')。
是否可以在正则表达式上运行正则表达式替换?
示例 - 使用反引号 (') 作为分隔符:
var reValid = /^s*(?:`[^`\]*(?:\[Ss][^`\]*)*`|[^,`s\]*(?:s+[^,`s\]+)*)s*(?:,s*(?:`[^`\]*(?:\[Ss][^`\]*)*`|[^,`s\]*(?:s+[^,`s\]+)*)s*)*$/;
当然,只需使用 source 属性将表达式作为字符串获取,进行替换,然后使用新表达式创建一个新的 RegExp 对象:
var reValid = /^s*(?:'[^'\]*(?:\[Ss][^'\]*)*'|[^,'s\]*(?:s+[^,'s\]+)*)s*(?:,s*(?:'[^'\]*(?:\[Ss][^'\]*)*'|[^,'s\]*(?:s+[^,'s\]+)*)s*)*$/;
reValid = RegExp(reValid.source.replace(/'/g, '`'));