为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScriptRegex:如何在正则表达式中放置变量?

/ 猿问

JavaScriptRegex:如何在正则表达式中放置变量?

LEATH 2019-07-03 16:51:01

JavaScriptRegex:如何在正则表达式中放置变量?

例如:

function(input){
    var testVar = input;
    string = ...
    string.replace(/ReGeX + testVar + ReGeX/, "replacement")}

但这当然是行不通的:)有什么办法可以做到吗?


查看完整描述

3 回答

?
慕瓜9086354
var regex = new RegExp("ReGeX" + testVar + "ReGeX");...string.replace(regex, "replacement");

更新

根据一些评论,重要的是要注意你可能想逃逸这个变量如果存在恶意内容的可能性(例如,变量来自用户输入)


查看完整回答
反对 回复 2019-07-03
?
拉莫斯之舞

可以使用RegExp对象:

var regexstring = "whatever";var regexp = new RegExp(regexstring, "gi");var str = "whateverTest";
var str2 = str.replace(regexp, "other");document.write(str2);

然后你可以构造regexstring以任何你想要的方式。

你可以读到更多关于它的内容。这里.


查看完整回答
反对 回复 2019-07-03
?
阿波罗的战车

要从JavaScript中的变量构建正则表达式,需要使用RegExp具有字符串参数的构造函数。

function reg(input) {
    var flags;
    //could be any combination of 'g', 'i', and 'm'
    flags = 'g';
    return new RegExp('ReGeX' + input + 'ReGeX', flags);}

当然,这是一个很幼稚的例子。它假设input已正确转义为正则表达式。如果您正在处理用户输入,或者只是希望更方便地匹配特殊字符,则需要转义特殊字符:

function regexEscape(str) {
    return str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')}function reg(input) {
    var flags;
    //could be any combination of 'g', 'i', and 'm'
    flags = 'g';
    input = regexEscape(input);
    return new RegExp('ReGeX' + input + 'ReGeX', flags);}


查看完整回答
反对 回复 2019-07-03

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信