0

我想用 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 :)

4

0 回答 0