javascript - 使用正则表达式来匹配一个或多个单词的一部分

标签 javascript jquery regex

我是正则表达式的新手,在一些基本的东西上遇到困难。

var name = "robert johnson";
var searchTerm = "robert johnson";

if (searchTerm.match(name)) {
    console.log("MATCH");
}

我想尝试找到符合以下任一条件的内容:

rob, robert, john, johnson, robertjohnson

为了使正则表达式更简单,我已经向“name”和“searchTerm”变量添加了 .toLowerCase()。

需要将什么正则表达式添加到 searchTerm.match(name) 才能实现此功能?

澄清:我不只是想通过我给出的 5 个示例来通过测试,我还试图想出一些正则表达式,其中任何测试都可以通过。因此,例如:

searchTerm.match(name)

...需要更改为:

searchTerm.match("someRegexVoodooHere"+name+"someMoreRegexVoodooHere")

所以,如果我编辑

var searchTerm = "robert johnson";

...将

var searchTerm = "rob";

...相同的函数 searchTerm.match 指令可以工作。

再说一遍,我是正则表达式的新手,所以我希望我能清楚地问这个问题。基本上我需要编写一个接受任何 searchTerm 的函数(这里不包含它,但在其他地方我要求至少输入 3 个字符),并且可以检查是否在给定字符串中按顺序找到这 3 个字母“名字姓氏”。

最佳答案

"robert johnson".match(/\b(john(son)?|rob(ert(johnson)?)?)\b/)

将为您提供所有可能的匹配项(如果您需要查找输入字符串是否包含任何单词,则有多个匹配项。

/\b(john(son)?|rob(ert(johnson)?)?)\b/.test("robert johnson")
如果字符串有任何匹配,

将返回true。 (最好在条件内使用它,因为您不需要找到所有匹配项)。

  • \b - 表示单词边界。
  • () - 捕获组。
  • ? - 量词“一个或无”。
  • | - 逻辑“或”。

关于javascript - 使用正则表达式来匹配一个或多个单词的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12993273/

相关文章:

javascript - 使用正则表达式确定单词后获取数字和单词

Javascript - 基本编程,无法更改图片

ruby - Ruby 中有正则表达式删除吗?

regex - Java替换所有方法附加替换字符串而不是替换

c# - 正则表达式\b 但在 c# 中不只是字母数字字符

javascript - 获取白银或黄金汇率

javascript - 如何垂直居中响应式剪辑图像?

jquery - 我可以将数据添加到已经序列化的数组中吗?

jquery - 使用 jQuery 添加类 when (...)

javascript - 如何防止最后一里的点击事件触发?