首页 > 解决方案 > 正则表达式 查找包含变量的模式并匹配可能包含连字符、逗号、撇号和空格的相同变量

问题描述

我有一个包含复合词的变量(例如可口可乐、煎饼)。我很难找到一个正则表达式模式,该模式将在模式本身中使用该特定变量,并且会在可口可乐或煎饼之类的东西中找到匹配项。

我在想[variableName,+-]+,但这会与变量复合词中的每个字母/字符匹配,因为它包含在字符集中。

标签: javascriptregex

解决方案


function regex_from(word) {
    return new RegExp(word.split("").map(x => x.replace(/\W/g, '\\$1')).join("[\\-,'\\s]?"));
}

const regex = regex_from('cocacola');

console.log(regex.test('coca-cola'));
console.log(regex.test('coc aco la'));
console.log(regex.test('cocoalco'));

想法:将输入单词拆分为单个字符(如有必要,将它们转义以在正则表达式中使用),使用分隔符将它们重新连接成单个字符串[\-,'\s]?,并将整个内容视为正则表达式。

例如,成为abc/a[\-,'\s]?b[\-,'\s]?c/匹配例如abc,,,,等。a-b-ca b'cab,c


推荐阅读