嘿所有,我想使用正则表达式将单词与随机放置在其中的一个指定字符进行匹配。我还想按照原始顺序保留“基本”单词的字符。
例如,使用test
的“基本”字和'y'
的指定字符,我希望正则表达式匹配以下所有内容,并且只需以下内容:ytest, tyest, teyst, tesyt, testy
重要的是,我正在使用javascript和使用dojo工具包。
谢谢!
答案 0 :(得分:3)
它必须是正则表达式吗?如果不是这样呢?
function matches(testWord, baseWord)
{
for (var i =0; i < testWord.length; i++)
{
if(testWord.substr(0,i) + testWord.substr(i+1,testWord.length- i) == baseWord)
return true;
}
return false;
}
答案 1 :(得分:0)
我认为你不能用一个正则表达式来做这件事,除非你明确拼写出来 - 但\b(ytest|tyest|teyst|tesyt|testy)\b
可能不是你想到的。
下一个最好的基于正则表达式的解决方案是首先匹配
\b(y)?t(y)?e(y)?s(y)?t(y)?\b
然后以编程方式断言五个捕获组中只有一个实际匹配了某些东西。
最后,使用非正则表达式解决方案可能会更好。虽然我很高兴被证明是错的。
答案 2 :(得分:0)
在这一个中你可以使用一个字符类,如任何数字(/ d)或某些范围的字母([xyz]),如果你传递函数为第三个参数的正则表达式。
function matchPlus(string, base, plus){
string= string.split(plus);
return string.length== 2 && string.join('')== base;
}
//test case
var tA= 'ytest,tyest,teyst,test,ytesty,testyy,tesyt,testy'.split(','), L= 8;
while(L){
tem= tA[--L];
tA[L]= tem+'= '+!!matchPlus(tem,'test','y');
}
alert(testA.join('\n'))
/* returned value: (String)
ytest= true
tyest= true
teyst= true
test= false
ytesty= false
testyy= false
tesyt= true
testy= true
*/