使用变量作为模式的正则表达式的javascript语法

时间:2011-10-12 04:01:48

标签: javascript regex

我有一个带动态数值的变量patt

var patt = "%"+number+":";

在test()方法中使用它的正则表达式语法是什么?

我一直在使用这种格式

var patt=/testing/g;
var found = patt.test(textinput);

TIA

4 个答案:

答案 0 :(得分:21)

是的,你几乎拥有它。您只需将正则表达式字符串传递给RegExp构造函数即可。然后,您可以调用其test()函数。

var matcher = new RegExp("%" + number + ":", "g");
var found = matcher.test(textinput);

希望有所帮助:)

答案 1 :(得分:7)

您必须使用正则表达式对象而不是正则表达式文字来构建正则表达式。

根据您的问题,我不确定您的匹配条件是什么,但如果您想将数字与'%'和':'标记相匹配,您可以执行以下操作:

var matcher = new RegExp("%" + num_to_match + ":", "g");

您可以在此处阅读更多内容: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

答案 2 :(得分:5)

你走在正确的轨道上

var testVar = '%3:';

var num = 3;

var patt = '%' + num + ':';

var result = patt.match(testVar);

alert(result);

示例: http://jsfiddle.net/jasongennaro/ygfQ8/2/

您不应该使用number。虽然它不是保留字,但它是预定义的类/对象名之一。

你的模式很好,而不会把它变成正则表达式的文字。

答案 3 :(得分:0)

现在很多人都喜欢用babel语言编写ES6语法。如果这是你的情况,那么有一个没有字符串连接的选项:

const matcher = new RegExp(`%${num_to_match}:`, "g");