Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转义regexp字符串?_Javascript_Regex - Fatal编程技术网

Javascript 转义regexp字符串?

Javascript 转义regexp字符串?,javascript,regex,Javascript,Regex,我记得有一种方法可以让一个很长的字符串Regex转义 我想我使用了新的Regexp,但我想不起来怎么做了 这里有谁知道怎么做吗?建议您将其转换为字符串,然后使用new RegExp()将其转换为正则表达式对象,如下所示: var rxstr = "[\d]" + "[\w]"; var rx = new RegExp(rxstr); 或者您可以尝试(以牺牲格式设置为代价): 后者速度更快,因为它不会创建大量新字符串,但可读性可能会降低。建议您将其转换为字符串,然后使用

我记得有一种方法可以让一个很长的字符串Regex转义

我想我使用了新的Regexp,但我想不起来怎么做了


这里有谁知道怎么做吗?

建议您将其转换为字符串,然后使用
new RegExp(
)将其转换为正则表达式对象,如下所示:

var rxstr = "[\d]" + 
            "[\w]";
var rx = new RegExp(rxstr);
或者您可以尝试(以牺牲格式设置为代价):


后者速度更快,因为它不会创建大量新字符串,但可读性可能会降低。

建议您将其转换为字符串,然后使用
new RegExp(
)将其转换为正则表达式对象,如下所示:

var rxstr = "[\d]" + 
            "[\w]";
var rx = new RegExp(rxstr);
或者您可以尝试(以牺牲格式设置为代价):


后者速度更快,因为它不会创建大量新字符串,但可能会被认为可读性较差。

您的问题有点不清楚。但如果我理解得很好,您需要一种方法来转义字符串,以便以后在正则表达式中使用它

PHP有一个函数
preg_quote
用于此目的。此函数有一个到JavaScript的端口:

function preg_quote (str, delimiter) {
    // Quote regular expression characters plus an optional character  
    // 
    // version: 1107.2516
    // discuss at: http://phpjs.org/functions/preg_quote
    // +   original by: booeyOH
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: preg_quote("$40");
    // *     returns 1: '\$40'
    // *     example 2: preg_quote("*RRRING* Hello?");
    // *     returns 2: '\*RRRING\* Hello\?'
    // *     example 3: preg_quote("\\.+*?[^]$(){}=!<>|:");
    // *     returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:'
    return (str + '').replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
}
输出:

TRUE

一个有效的例子:

您的问题有点不清楚。但是如果我理解得很好,您需要一种方法来转义字符串,以便以后在正则表达式中使用它

PHP有一个函数
preg_quote
用于此目的。此函数有一个到JavaScript的端口:

function preg_quote (str, delimiter) {
    // Quote regular expression characters plus an optional character  
    // 
    // version: 1107.2516
    // discuss at: http://phpjs.org/functions/preg_quote
    // +   original by: booeyOH
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: preg_quote("$40");
    // *     returns 1: '\$40'
    // *     example 2: preg_quote("*RRRING* Hello?");
    // *     returns 2: '\*RRRING\* Hello\?'
    // *     example 3: preg_quote("\\.+*?[^]$(){}=!<>|:");
    // *     returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:'
    return (str + '').replace(new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\' + (delimiter || '') + '-]', 'g'), '\\$&');
}
输出:

TRUE
工作示例:

Short'n Sweet(和Complete) 请参阅:

Short'n Sweet(和Complete)
请参阅:

甚长字符串正则表达式转义是什么?我猜有一个非常长的正则表达式文本。这行从页面上消失了,所以@weng想要将其拆分,似乎是为了可读性。甚长字符串正则表达式转义是什么?我猜有一个非常长的正则表达式文本。这行从页面上消失了很多@翁想将其拆分,似乎是为了可读性。谢谢,这就是我来这里的目的。遗憾的是没有内置函数RegExp.quote。不过我不理解分隔符部分。是否有一个字符有时是RegExp特殊的,有时不是?@peter delimiter部分出现在这里,因为这个函数是1:1 por从PHP到JavaScript。当使用字符串创建正则表达式时,JavaScript中没有定界符。因此我认为此函数中的定界符部分毫无意义。谢谢,这就是我来这里的目的。遗憾的是没有内置函数RegExp.quote。但我不理解该定界符部分。是否有字符at有时是RegExp专用的,有时不是?@peter分隔符部分出现在这里,因为此函数是从PHP到JavaScript的1:1端口。当使用字符串创建正则表达式时,JavaScript中没有分隔符。因此我认为此函数中的分隔符部分毫无意义。不完整。何处是
?:njavascript中的特殊正则字符,除非前面有一个?字符,所以转义?也可以防止:变得特殊。虽然如果我错了,请纠正我。对。但是为什么要转义
]
呢?转义
[
也会使它变得不特殊。
也一样
.Hmmm…公平点。不完整。
?:在javascript中不是一个特殊的正则字符,除非前面有一个?,所以转义?也可以防止:变得特殊。虽然如果我错了,请纠正我。对。但是为什么要转义?转义?转义
[
也不会让它变得特别。对于
}
也一样。
.Hmmm…公平点。