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

新手上路,请多包涵

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

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

原文由 Gordon Gustafson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

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

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

原文由 Gumbo 发布,翻译遵循 CC BY-SA 2.5 许可协议

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]);

原文由 Anonymous 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏