[英]Using a Regular Expression how can i find if a string contains all the characters of a specific sequence in the correct sequence order?
使用javascript正則表達式如何查找字符串是否以正確的序列順序包含特定序列的所有字符?
例如,假設我有以下字符串
sbvykkjwkkkTjSwbpvkoSbjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk
我想檢查它是否包含以下字符: TEST按該順序但不一定彼此相鄰。
let reg = /.*T.*E.*S.*T.*/ let check = reg.test('sbvykkjwkkkTjSwbpvkoSbjpobvvwwEjknbnjsksbwybwSojoybryrbevvydTeydk') console.log(check)
您將使用“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);
在您的字符之間插入.*
以匹配兩者之間的任何內容。
您創建了一個生成測試器函數的通用函數,如下所示:
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'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.