首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式--我如何收紧它?

正则表达式--我如何收紧它?
EN

Stack Overflow用户
提问于 2018-05-11 18:57:54
回答 2查看 90关注 0票数 0

我有以下声明:

代码语言:javascript
复制
if (new RegExp("\\b" + product.toLowerCase() + "\\b").test(cellVal.toLowerCase())) {
    console.log(product.toLowerCase() + " : " + cellVal.toLowerCase());
}

我对类似的产品有意见。我有以下产品引起问题:

  1. tpd
  2. tpd -活性

我发现,当tpd或tpd -活动被传入并相互测试时,test语句将传递为真。

我想要的是,如果tpd是一个完整的单词,那么测试就应该通过。如果找到tpd -活动,那么应该会通过。但是正在发生的是,tpd也在tpd活动中找到了一个匹配项。我认为\\b会解释这种情况。

product来自数据库列表,这两种产品都是有效的。cellVal是HTML中的文本。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-11 19:09:21

使用单词边界,您可以在单词周围断言边界,而不是整个输入字符串。为了匹配整个字符串,您需要^ (插入符号-输入字符串的开头)和$ (输入字符串的美元结尾)锚点:

代码语言:javascript
复制
new RegExp("^" + product.toLowerCase() + "$")
票数 1
EN

Stack Overflow用户

发布于 2018-05-11 19:00:49

将产品按长度向后排序:

代码语言:javascript
复制
const products = ["tpd - activity", "tpd"];

(如果您确实需要以编程方式对它们进行排序):

代码语言:javascript
复制
products.sort((a, b) => b.length - a.length);

然后得到第一个包括:

代码语言:javascript
复制
const result = products.find(p => cellVal.toLowerCase().includes(p));

console.log(result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50298640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档