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

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

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


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

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

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

使用JavaScript RegExp对象构造函数。

var re = new RegExp("w+");
re.test("hello");

您可以将标志作为第二个字符串参数传递给构造函数。 详情请参阅文档。

链接地址: http://www.djcxy.com/p/13457.html

上一篇: Converting user input string to regular expression

下一篇: Escaping regex string in Python