javascript - 正则表达式 /b 单词边界查找单词不起作用
问题描述
具体是如何/b
工作的?我需要在一个句子中找到一个单词的完全匹配。我有以下正则表达式和测试:
const values = 'sports is good'
const values2 = 'I\'m a sportsman' // shoud not match
const values3 = 'I\'ve done my bisports today' //shoud not match
function match(values) {
return values.match(new RegExp('sports' + '\\b', 'i')) ? true : false
}
alert(match(values)) //true
alert(match(values2)) // false
alert(match(values3)) // I expect this to be false coz it isn't really an exact match
为什么第三次警报是真的?我预计那是错误的,因为bisports
不是真的sports
。
解决方案
在您的正则表达式中,您只在单词末尾包含了一个单词边界。
在开头添加一个以仅匹配确切的单词:
return values.match(new RegExp('\\b' + 'sports' + '\\b', 'i')) ? true : false;
这是一个完整的片段:
const values1 = 'sports is good';
const values2 = 'I\'m a sportsman';
const values3 = 'I\'ve done my bisports today';
function match(values) {
return values.match(new RegExp('\\b' + 'sports' + '\\b', 'i')) ? true : false;
}
console.log(match(values1)); // true
console.log(match(values2)); // false
console.log(match(values3)); // false
推荐阅读
- php - 用于重新排列 csv 数据并输出为 csv 的 PHP 脚本
- ajax - Hash::check 在比较密码时总是返回 false
- objective-c - 使用 Core Services 和 Objective-C 在 MacOS Catalina 上创建本地组
- php - 在提交表单时更改 PDF 中的纸张大小
- java - 属性文件中值的 Java 验证器注释
- c# - Entity Framework Core .Include() 正在过滤查询
- ansible - Ansible 无法识别配置中设置的默认库存
- javascript - 如何在 Fusion 图表的组织图表可视化中处理 onclick 事件
- jms - Amazon MQ (ActiveMQ) 处理大型消息时性能不佳
- excel - 使用 Excel 检查匹配项并比较多个列表