在 Javascript 中的正则表达式上运行正则表达式替换



我有正则表达式:

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, '`'));

最新更新