测试方法不适用于以括号/特殊字符开头的字符串的正则表达式

问题描述 投票:1回答:2

我试图返回布尔值,以匹配输入字符串与精确的正则表达式模式,但给定的代码不能正常工作与包含括号的字符串.Below是相同的示例示例。

function myFunction() {
    var str = "Account Opening Member Onboarding Assignment Cube (AOMOA)";
    var patt = new RegExp("/\bAccount Opening Member Onboarding Assignment Cube (AOMOA)\b/");
    return patt.test(str);
}
javascript regex
2个回答
1
投票

您最有可能在空格之间查找整个单词,因为您传递给正则表达式的搜索短语可能以特殊字符开头/结尾。在这种情况下,使用(?:^|\s)而不是第一个\b(?!\S)而不是最后一个\b

另一点是你需要escape the search phrase将最终的特殊字符视为字面字符。

使用

function myFunction(key) {
    var str = "Text with Account Opening Member Onboarding Assignment Cube (AOMOA) string inside";
    var patt = new RegExp("(?:^|\\s)" + key.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?!\\S)");
    return patt.test(str);
}

var key="Account Opening Member Onboarding Assignment Cube (AOMOA)";
console.log(myFunction(key));

0
投票

function myFunction(key) {
    var str = "Text with Account Opening Member Onboarding Assignment Cube (AOMOA) string inside";
    var patt = new RegExp("(?:^|\\s)" + key.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') + "(?!\\S)");
    return patt.test(str);
}

var key="Account Opening Member Onboarding Assignment Cube (AOMOA)";
console.log(myFunction(key));
© www.soinside.com 2019 - 2024. All rights reserved.