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

Jam*_*mex 25 javascript regex

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

var patt = "%"+number+":";
Run Code Online (Sandbox Code Playgroud)

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

我一直在使用这种格式

var patt=/testing/g;
var found = patt.test(textinput);
Run Code Online (Sandbox Code Playgroud)

TIA

Mic*_*nXD 21

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

var matcher = new RegExp("%" + number + ":", "g");
var found = matcher.test(textinput);
Run Code Online (Sandbox Code Playgroud)

希望有帮助:)

  • 当你想使用一个特殊字符同时也是一个字符串转义字符时要小心,比如`\s`,你需要对一些特殊字符进行双重转义,例如:`new RegExp(\`\\s*${var }\`, 'g')` 将所有空格匹配到一个变量。 (2认同)

Gop*_*han 7

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

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

var matcher = new RegExp("%" + num_to_match + ":", "g");
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多内容:https: //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp


Jas*_*aro 5

你走在正确的轨道上

var testVar = '%3:';

var num = 3;

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

var result = patt.match(testVar);

alert(result);
Run Code Online (Sandbox Code Playgroud)

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

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

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