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

Run a RegEx replace on a RegEx in Javascript

本文关键字:正则表达式 替换 运行 Javascript      更新时间:2023-09-26

我有正则表达式:

var reValid = /^'s*(?:'[^''']*(?:''['S's][^''']*)*'|[^,''s'']*(?:'s+[^,''s'']+)*)'s*(?:,'s*(?:'[^''']*(?:''['S's][^''']*)*'|[^,''s'']*(?:'s+[^,''s'']+)*)'s*)*$/;

这验证了 CSV 文件,但我希望能够使用任何分隔符修改分隔符 (')。

是否可以在正则表达式上运行正则表达式替换?

示例 - 使用反引号 (') 作为分隔符:

var reValid = /^'s*(?:`[^`'']*(?:''['S's][^`'']*)*`|[^,`'s'']*(?:'s+[^,`'s'']+)*)'s*(?:,'s*(?:`[^`'']*(?:''['S's][^`'']*)*`|[^,`'s'']*(?:'s+[^,`'s'']+)*)'s*)*$/;

当然,只需使用 source 属性将表达式作为字符串获取,进行替换,然后使用新表达式创建一个新的 RegExp 对象:

var reValid = /^'s*(?:'[^''']*(?:''['S's][^''']*)*'|[^,''s'']*(?:'s+[^,''s'']+)*)'s*(?:,'s*(?:'[^''']*(?:''['S's][^''']*)*'|[^,''s'']*(?:'s+[^,''s'']+)*)'s*)*$/;
reValid = RegExp(reValid.source.replace(/'/g, '`'));