将用户输入字符串转换为正则表达式

2022-08-29 23:29:42

我正在用HTML和JavaScript设计一个正则表达式测试器。用户将输入一个正则表达式,一个字符串,并通过单选按钮选择要测试的函数(例如搜索,匹配,替换等),当使用指定的参数运行该函数时,程序将显示结果。当然,会有额外的文本框用于替换额外的参数等。

我的问题是从用户那里获取字符串并将其转换为正则表达式。如果我说他们不需要在他们输入的正则表达式周围有's,那么他们就不能设置标志,比如 和 .因此,它们必须在表达式周围有 's,但是如何将该字符串转换为正则表达式?它不能是文字,因为它是一个字符串,我不能把它传递给RegExp构造函数,因为它不是没有的字符串。有没有其他方法可以将用户输入字符串转换为正则表达式?我是否必须使用 's 解析正则表达式的字符串和标志,然后以另一种方式构造它?我是否应该让他们输入一个字符串,然后分别输入标志?//gi//////


答案 1

使用 RegExp 对象构造函数从字符串创建正则表达式:

var re = new RegExp("a|b", "i");
// same as
var re = /a|b/i;

答案 2
var flags = inputstring.replace(/.*\/([gimy]*)$/, '$1');
var pattern = inputstring.replace(new RegExp('^/(.*?)/'+flags+'$'), '$1');
var regex = new RegExp(pattern, flags);

var match = inputstring.match(new RegExp('^/(.*?)/([gimy]*)$'));
// sanity check here
var regex = new RegExp(match[1], match[2]);