我想用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代码有错误吗?
P.S .:这是针对Advent Of Code,2018年12月5日:)