【发布时间】:2014-07-13 12:52:57
【问题描述】:
我似乎让很多人对这个问题感到困惑,所以让我尽可能简单地说明我想做什么。
我想在一个文本字符串中搜索以“mak”、“mind”和“mass”开头并以任何额外内容或“e”或“er”结尾的单词。那将是“mak”、“make”、“maker”、“mind”、“minde”、“minder”、“mass”、“masse”、“masser”。
如果文本中的某些单词以特定字母开头并以特定字母结尾,我会尝试匹配它们。我正在使用以下正则表达式:
aray = ['mak','mind', 'mass'];
for(i=0; i < aray.length; i++){
searchTerm = new RegExp(
"\\b" + aray[i] + "\\b|" +
"\\b" + aray[i] + "en\\b|" +
"\\b" + aray[i] + "er\\b");
word = testText.match(searchTerm, "gi");
}
问题是当第一个实例匹配时,其他实例不会被搜索。有人可以指出我正确的方向。任何帮助将不胜感激。
这个问题已被标记为重复,但另一个问题没有回答我遇到的困难点。
【问题讨论】:
-
分享一些示例输入。
-
你应该看到这个主题:stackoverflow.com/questions/15090829/…
-
你把你的
"gi"标志放在了错误的函数上;它应该在 RegExp 构造函数中。除此之外,只要您在循环中使用wordinside(在循环外,它始终是最后一场比赛) -
我认为“gi”必须在 .match() 中,以便在第一次匹配后继续匹配。我试过把它放在 searchTerm 的最后一行,但这不起作用你到底建议它应该在哪里?我在循环中使用单词
-
也许 OP 想要的是
myRegex = /\b(word1|word2|word3)(en|er)?\b/gi(请注意,我还使用 JavaScript 的正则表达式文字语法来简化转义和标志)
标签: javascript regex