javascript - 正则表达式 查找包含变量的模式并匹配可能包含连字符、逗号、撇号和空格的相同变量
问题描述
我有一个包含复合词的变量(例如可口可乐、煎饼)。我很难找到一个正则表达式模式,该模式将在模式本身中使用该特定变量,并且会在可口可乐或煎饼之类的东西中找到匹配项。
我在想[variableName,+-]+
,但这会与变量复合词中的每个字母/字符匹配,因为它包含在字符集中。
解决方案
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-c
a b'c
ab,c
推荐阅读
- python - 在 jupyter 笔记本中的 python 中,使用“pip3 install wikipedia”安装后无法导入 wikipedia API
- python - 在数据框中保留列的唯一值而不使用删除重复项
- python - Tensorflow 1.15 张量切片:视图还是新的?
- angular - 如果模型已经检查了值(Angular 8),则为复选框输入填充 formArray
- c++ - 使用 fs::recursive_directory_iterator() 和 fs::directory_iterator() 的通用方法
- ansible - 使用 Ansible 更改 Shape OCI 实例
- scala - IntelliJ 运行火花:无法解析预期的符号和标识符,但找到字符串文字 &';' 预期但 ')' 找到
- prometheus - 自定义 Grafana 面板灰显
- javascript - 嵌套结构的最快对象重映射
- python - 在这个 Singleton 装饰器实现中,何时调用 __init__ ,它究竟做了什么?