Как вы делаете регулярное выражение, которое соответствует слову с одним случайно вставленным символом? - PullRequest
3 голосов
/ 03 июня 2010

Привет всем, я хочу использовать регулярное выражение для сопоставления слова с одним указанным символом, случайно помещенным в него. Я также хочу сохранить символы этого «базового» слова в их первоначальном порядке.

Например, с базовым словом test и указанным символом 'y' я хочу, чтобы регулярное выражение совпадало со всеми следующими, и ТОЛЬКО следующее: ytest, tyest, teyst, tesyt, testy

Как бы то ни было, я работаю в javascript и использую инструментарий dojo.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 03 июня 2010

Должно ли это быть Regex? Если не будет это делать?

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;
}
0 голосов
/ 03 июня 2010

В этом вы можете использовать класс символов, например любое число (/ 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
*/
0 голосов
/ 03 июня 2010

Я думаю, что вы не можете сделать это с помощью одного регулярного выражения, если не сформулируете это явно, но \b(ytest|tyest|teyst|tesyt|testy)\b, вероятно, не то, что вы имели в виду.

Следующим лучшим решением на основе регулярных выражений будет первое совпадение

\b(y)?t(y)?e(y)?s(y)?t(y)?\b

и затем программно утверждают, что только одна из пяти групп захвата действительно что-то соответствует.

В конце концов, вам, вероятно, лучше воспользоваться решением без регулярных выражений. Хотя я был бы рад оказаться неправым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...