我想用 Javasacript RegExp 找到成对的字符串: 1. 如果两个字符是相同的字母 2. 如果两个字符的大小写不同
所以'aA'是可以的,但'AA'不是。
该字符串是连续的,因此其中没有空格、换行符、逗号等 - 只有字母[a-zA-Z]。
为此,我想出了以下正则表达式: /(.)((?!\1)(?i\1))/g
粗略解释:取一个字符,如果后面的字符相同(区分大小写),则丢弃第一个字符(继续),如果后面的字符不相同,但不区分大小写,那么我找到了一对。
正则表达式在不同的在线测试器中工作(它适用于很长的字符串),但我无法让它与 Javascript 代码一起工作。
所以这会引发 JS 代码错误:
// Javascript code - throws error
var base = "aaAAAaBbBBBaa";
// regex syntax: /(.)((?!\1)(?i\1))/g
var regEx = new RegExp( "(.)((?!\\1)(?i)\\1)", "g" );
console.log( regEx.test( base ) );
//the correct matches should be (in order): "aA", Aa", "Bb"
我尝试使用 XRegExp,但没有任何效果:
// XRegExp code - throws error
var searchPattern = XRegExp( '(?<char>.)((?!\\k<char>)((?i)\\k<char>))', 'g' );
console.log( searchPattern.test( "aaaAbbBaAAA" ) );
// the correct matches should be (in order): "aA", "bB", "aA"
我现在完全没有想法 - 正则表达式有效(经过测试),但不适用于 JS。:(
有谁知道如何解决这个问题?我的 JS / XRegExp 代码有错误吗?
PS:这是针对2018 年 12 月 5 日的Advent Of Code :)