我是正则表达式的新手,在一些基本的东西上遇到困难。
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/