代码之家  ›  专栏  ›  技术社区  ›  user280109

使用正则表达式,我如何才能找到一个字符串是否包含一个特定序列中所有字符的正确序列顺序?

  •  -2
  • user280109  · 技术社区  · 7 年前

    使用javascript正则表达式,我如何才能找到一个字符串是否以正确的顺序包含特定序列的所有字符?

    sbvykkjwkkktjswbpvkosbjpobvwwwejknjsksbwybwysojoybryrbevydteydk公司

    我想检查它是否包含以下字符: 试验

    4 回复  |  直到 7 年前
        1
  •  1
  •   arizafar    7 年前

    let reg = /.*T.*E.*S.*T.*/
    
    let check = reg.test('sbvykkjwkkkTjSwbpvkoSbjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk')
    console.log(check)
        2
  •  0
  •   jo_va    7 年前

    插层 .* 你的角色之间的匹配。

    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'));
        3
  •  0
  •   Community Mohan Dere    6 年前

    您将使用“0或更多”通配符模式: .* . 这将测试零个或多个字符。然后只需将测试字符串与介于两者之间的字符串一起排序。

    编辑

    如果希望当测试字符串中的任何其他字符顺序不匹配时,模式不匹配,那么应该指定测试字符之间可以有哪个“any”字符,如“除了哪些字符是有效的填充?”。

    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);