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