var name_obtained = 'Manuel Barrios Pineda';
var re = new RegExp('\b[' + name_obtained + ']+\b');
那是行不通的。您构建一个字符类来匹配单词边界之间的单个字符。结果将等于
var re = /\b[adeilnoruBMP]\b/;
input_string.match(name_obtained)
name_obtained
当比 长时,这永远不会起作用input_string
。请注意,match
它将尝试在 中查找正则表达式,而input_string
不是相反。
因此我建议使用一些简单的东西,比如
var name_obtained = 'Manuel Barrios Pineda';
var input_string = 'Manuel';
if (name_obtained.indexOf(input_string) > -1) {
alert('Match');
} else {
alert('No Match');
}
要使用您input_string
的正则表达式在获得的名称中搜索省略中间名或结束字符,您可以这样做
String.prototype.rescape = function(save) {
return this.replace(/[{}()[\]\\.?*+^$|=!:~-]/g, "\\$&");
}
var name_obtained = 'Manuel Barrios Pineda';
var input_string = 'Manuel'; // or 'Manuel P', 'Manuel Pineda', 'Manuel B', 'Barrios P', …
var re = new RegExp("\\b"+input_string.rescape().split(/\s+/).join("\\b.+?\\b"));
if (re.test(name_obtained)) {
alert('Match');
} else {
alert('No Match');
}