Javascript 在正则表达式中转义变量
我试图获取输入文本字段的值,并在正则表达式中使用它。这是我必须匹配的一行的开始Javascript 在正则表达式中转义变量,javascript,regex,Javascript,Regex,我试图获取输入文本字段的值,并在正则表达式中使用它。这是我必须匹配的一行的开始 regex = new RegExp('^' + inputValue, 'i') 它适用于以字母数字字符开头的常规字符串,但我也将其用于美元金额。当输入字段以“$”(美元符号)开头时,我会得到不同的结果 如何将上面的变量转义为一个简单的字符串?我试过这个,但运气不好: regex = new RegExp('^[' + inputValue + ']', 'i') $匹配一行的结尾,因此如果您输入的值以$开头,
regex = new RegExp('^' + inputValue, 'i')
它适用于以字母数字字符开头的常规字符串,但我也将其用于美元金额。当输入字段以“$”(美元符号)开头时,我会得到不同的结果
如何将上面的变量转义为一个简单的字符串?我试过这个,但运气不好:
regex = new RegExp('^[' + inputValue + ']', 'i')
$匹配一行的结尾,因此如果您输入的值以$开头,您将查找类似于
^$9.99
的匹配项,这显然不匹配任何内容,因为9.99不能位于行的结尾之后
regex = new RegExp('^' + inputValue, 'i')
如果
$
是您唯一担心的字符,您可以通过查找/替换运行inputValue,以便将$
转义到\$
您没有想过只检查字符串是否以indexOf
的输入开头吗
按以下方式进行:
var inputValue = "some";
if ( "some string".indexOf(inputValue.toLowerCase()) == 0 ) {
// test passed
}
可能是我见过的最好的实现之一 为子孙后代抄袭
function preg_quote (str, delimiter) {
// Quote regular expression characters plus an optional character
//
// version: 1109.2015
// 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'), '\\$&');
}
函数预引号(str,分隔符){
//引用正则表达式字符加上可选字符
//
//版本:1109.2015
//讨论地点:http://phpjs.org/functions/preg_quote //+原创者:booeyOH
//+改进:Goral(http://magnetiq.com)
//+改进者:凯文·范·佐内维尔德(http://kevin.vanzonneveld.net)
//+错误修复者:Onno Marsman
//+改进者:Brett Zamir(http://brett-zamir.me)//*示例1:preg_quote($40”);
//*返回1:“\$40”
//*示例2:preg_quote(“*RRRING*Hello?”);
//*返回2:“\*rring\*Hello\?”
//*示例3:preg\u quote(“\\.+*?[^]$(){}=!\:”;/*返回3:“\\.\+*\?\[\^\]\$\(\)\{\\\=\!\\\\\:”
返回(str+'').replace(新的RegExp('[.\\\\+*?\[\\\\^\\]$(){}=!\\;:\\'+(分隔符\\\\''+'-]','g'),'\$&');
}
PHP有preg_quote
,我认为JavaScript没有。PHP函数转义\+*?[ ^ ] $ ( ) { } = ! < > | : -
,所以我想用它们的转义版本来替换它们。也许看看这个问题的答案。函数escapeRegExp(str)的可能重复项{return str.replace(/[\-[]\/\{}()*\+\?\.\\\^\$\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\