搜索有特定开头和结尾的单词
Search for words with specific starts and endings
我之前问了一个非常详细的问题,但它被标记为重复,即使它不是。
所以我会尽可能简单地解释我要做的事情。我想在一个文本字符串中搜索以特定字母开头的单词,如"mak"、"mind"answers"mass"(它们在一个数组中),并以"e"或"er"结尾。在这个例子中就是"mak", "make", "maker", "mind", "minde", "minder", "mass", "masse", "masser"。
我使用的代码只查找数组中每个单词的第一个匹配项,例如示例中的"mak","mind"answers"mass"。
derPro = ['mak','mind', 'mass', ;
for(i = 0; i < derPro.length; i++){
searchTerm = new RegExp(
"''b" + derPro[i] + "''b|" +
"''b" + derPro[i] + "e''b|" +
"''b" + derPro[i] + "er''b,'gi'");
word = testText.match(searchTerm, "gi");
应该可以:
var derPro = ['mak','mind', 'mass'];
var searchTerm = new RegExp('''b((?:' + derPro.join('|') + ')(?:er?)?)''b', "gi");
//=> /'b((?:mak|mind|mass)(?:er?)?)'b/gi
// now match the regex in a while loop
var matches=[]
while (m = searchTerm.exec('mass maker minde')) matches.push(m[1]);
console.log(matches);
//=> ["mass", "maker", "minde"]
从索引1中获取匹配的组
/('b(mak|mind|mass)(e|er)?'b)/gi
在线演示
这个工作,我知道你要求一个正则表达式,但我认为这将是有用的。
var keys = [
'mak',
'mind',
'mass'
];
var test_words = [
'mak',
'make',
'maker',
'mind',
'mass'
];
var matches = [];
for(var i = 0; i < keys.length; i++) {
var key = keys[i];
for(var ii = 0; ii < test_words.length; ii++) {
var test_word = test_words[ii];
if(test_word.substr(0, key.length) == key) {
if( test_word.substr(-1) == 'e' || test_word.substr(-2) == 'er') {
matches.push(test_word);
}
}
}
}
console.log(matches);
// [make, maker, minde]
jsfiddle
相关文章:
- 当鼠标悬停在文本中的单词上时显示警报
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- 如何按从当前单词到段落中该句子(.)结尾的范围选择文本
- 如何对一块文本进行切片,使其不会'Don’不要以分裂的单词结尾
- 如何从以某个单词(regexp)结尾的字符串中获取id
- 以相同元音字母开头和结尾的匹配单词
- 在开头或结尾使用特殊字符匹配单词
- 不是以正则表达式结尾的特定单词
- 只允许在单词的中间、结尾或开头使用某些字符,而不强制使用某些长度
- Regex匹配所有单词,但以特殊字符开头和结尾的单词除外
- Javascript regexp:如何查找不以特定单词(不是单个字母)结尾的字符串
- 搜索有特定开头和结尾的单词
- 如何在字符串中查找以一个单词开头并以另一个单词结尾的文本的第一次出现
- 正则表达式for以某个单词结尾
- 删除字符串中单词开头和结尾的标点符号
- 匹配所有以特定单词开头和结尾的摘录
- 匹配字符串中不以省略号结尾的单词
- 正则表达式:检查一行是否不以单词结尾时出现问题
- Regex:从字符串中查找以AND开头、以结尾的子字符串,并替换子字符串中的单词