Используя регулярное выражение, как я могу найти, если строка содержит все символы определенной последовательности в правильном порядке последовательности? - PullRequest
0 голосов
/ 11 марта 2019

Используя регулярное выражение JavaScript, как я могу найти, если строка содержит все символы определенной последовательности в правильном порядке последовательности?

Например, скажем, у меня была следующая строка

sbvykkjwkkkTjSwbpvkoSbjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk

Я хочу проверить, содержит ли он следующие символы: TEST в таком порядке, но не обязательно рядом друг с другом.

Ответы [ 3 ]

1 голос
/ 11 марта 2019

let reg = /.*T.*E.*S.*T.*/

let check = reg.test('sbvykkjwkkkTjSwbpvkoSbjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk')
console.log(check)
0 голосов
/ 11 марта 2019

Вставьте .* между вашими персонажами, чтобы соответствовать чему-либо между ними.

Вы создаете обобщенную функцию, которая генерирует функцию тестера, например:

const testSequence = pattern => str => new RegExp(pattern.split('').join('.*')).test(str);

const tester1 = testSequence('TEST');
const tester2 = testSequence('HELLO');

console.log(tester1('sbvykkjwkkkTjSwbpvkoSbjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk'));
console.log(tester1('TEST'));
console.log(tester1('TNT'));
console.log(tester2('HhEeLlLlOo'));
0 голосов
/ 11 марта 2019

Вы должны использовать шаблон подстановки «0 или более»: .*. Это проверит на ноль или более любого символа. Затем просто закажите тестовую строку с теми, которые между ними.

Редактировать

Если вы хотите, чтобы шаблон не совпадал, когда любые другие символы из тестовой строки совпадают, то вам следует указать, какой «любой» символ может находиться между тестовыми символами, как, например, «кроме того, какие символы допустимы» обивка?».

const positiveString = 'sbvykkjwkkkTjwbpvkobjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk';
const negativeString1 = 'sbvykkjwkkkTjwbpvkobSjpobvvwwEjknbnjsksbSwybwSojoybryrSbevvydTeydk';
const negativeString2 = 'asdfasdfasdfTasfasfdasfdSasfasfasdfasdfasfdEasdfaTsdfasdf';

const regex = /T[^TEST]*?E[^TEST]*?S[^TEST]*?T/;

const match = positiveString.match(regex);
const noMatch1 = negativeString1.match(regex);
const noMatch2 = negativeString2.match(regex);

console.log('Match: ', match, '\nNo-match: ', noMatch1, '\nAlso No-match: ', noMatch2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...