在JavaScript中全局区分大小写的RegExp中仅获得一个不区分大小写的字符

时间:2018-12-05 19:45:33

标签: javascript regex regex-negation regex-lookarounds xregexp

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

0 个答案:

没有答案