Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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 正则表达式精确文本匹配不起作用_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 正则表达式精确文本匹配不起作用

Javascript 正则表达式精确文本匹配不起作用,javascript,jquery,regex,Javascript,Jquery,Regex,我试图执行文本框中键入的文本的精确匹配,但不知何故,它作为部分匹配工作。我尝试了不同的选择,但找不出原因 RegExp.escape=函数(文本){ //转义+,[,?…字符 返回text.replace(/[-[\]{}()*+?,\\^$\\s]/g,“\\$&”); } var resultbl=$('#resultbl'); $('SearchTxtBox').bind('change keyup',function(){ 结果bl.text(“”); var期权=[]; 选项。按(“

我试图执行文本框中键入的文本的精确匹配,但不知何故,它作为部分匹配工作。我尝试了不同的选择,但找不出原因

RegExp.escape=函数(文本){
//转义+,[,?…字符
返回text.replace(/[-[\]{}()*+?,\\^$\\s]/g,“\\$&”);
}
var resultbl=$('#resultbl');
$('SearchTxtBox').bind('change keyup',function(){
结果bl.text(“”);
var期权=[];
选项。按(“[1]我的]”);
选项。按(“[2]我的名字]”);
选项。推送(“[3]名称]”);
选项。按(“[2]我的名字]”);
var searchStr=RegExp.escape($.trim($(this.val()));
var searchArr=[];
如果(searchStr!=''&&searchStr!=null){
searchStr=searchStr.replace(/\,/g,“\\”)
searchArr=searchStr.split('\\');
}
var search=searchArr[0];
search=search.replace(/[.?*+^$[\]\\(){}}-]/g',);
var regex=new RegExp($.trim(search),'gi');
$.each(选项,函数(i,选项){
if(option.match(regex)!==null){
resultbl.append(选项+“”);
}
});
});

搜索:


不需要复杂的预处理,只需测试字符串是否与此模式匹配:

^\[\d+\]<searchStr>\]$
以下是更新的代码段:

RegExp.escape=函数(文本){
//转义+,[,?…字符
返回text.replace(/[-[\]{}()*+?,\\^$\\s]/g,“\\$&”);
}
var resultbl=$('#resultbl');
$('SearchTxtBox').bind('change keyup',function(){
结果bl.text(“”);
var期权=[];
选项。按(“[1]我的]”);
选项。按(“[2]我的名字]”);
选项。推送(“[3]名称]”);
选项。按(“[2]我的名字]”);
var searchStr=RegExp.escape($.trim($(this.val()));
var regex=new RegExp(“^\\[\\d+\\]”“+$.trim(searchStr)+“\\]$”,“gi”);
$.each(选项,函数(i,选项){
if(option.match(regex)!==null){
resultbl.append(选项+“”);
}
});
});

搜索:


使用regex/^[\d+]Name]$/而不是/Name/,以确保数字和搜索词之间没有其他内容,并且后面没有任何内容。对不起,反斜杠在我的评论中不断消失;结尾的[和]和]应该转义。@m69使用反勾号字符,您可以在注释中格式化内联代码,并解决问题。
var regex = new RegExp("^\\[\\d+\\]" + $.trim(searchStr) + "\\]$", 'gi');