Javascript 有两个可能的组,如何引用不匹配的组?

Javascript 有两个可能的组,如何引用不匹配的组?,javascript,regex,Javascript,Regex,例如: 我想配这个 ##A##B##A## ##B##A##B## 但这些都不是 ##A##A##A## ##A##A##B## ##A##B##B## ##B##A##A## ##B##B##A## ##B##B##B## 不要用这个:#A#B#A#B#A#B#A#B#A#B# 我的方法是#((A)|(B))#######1##,但我不知道在中放什么? 我不知道怎么问这个问题,但如果你有更好的问题,我会编辑它。你可以使用负前瞻(?!…)如下: /##(A|B)##(?!\1)[AB]##

例如:

我想配这个

##A##B##A##
##B##A##B##
但这些都不是

##A##A##A##
##A##A##B##
##A##B##B##
##B##A##A##
##B##B##A##
##B##B##B##
不要用这个:
#A#B#A#B#A#B#A#B#A#B#


我的方法是
#((A)|(B))#######1##
,但我不知道在
中放什么?


我不知道怎么问这个问题,但如果你有更好的问题,我会编辑它。

你可以使用负前瞻
(?!…)
如下:

/##(A|B)##(?!\1)[AB]##\1##/
说明:

##     : litteral "##"
(A|B)  : litteral "A" or "B" grouped as \1
##     : litteral "##"
(?!\1) : not \1 (doesn't consume from the input string so we need the following [AB])
[AB]   : litteral "A" or "B" (set)
##     : litteral "##"
\1     : the result of the group \1
##     : litteral "##"
示例:

##     : litteral "##"
(A|B)  : litteral "A" or "B" grouped as \1
##     : litteral "##"
(?!\1) : not \1 (doesn't consume from the input string so we need the following [AB])
[AB]   : litteral "A" or "B" (set)
##     : litteral "##"
\1     : the result of the group \1
##     : litteral "##"
“代码>var测试”代码>var测试<代码>var测试<代码>var测试=[““35周五周五周五周五周五周五周五周五周五周五周五的代码>代码>var测试<代码>var测试<代码>var测试=[[““35周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五的A A A A A A周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五周五,A A A A A A A A A周五周五周五周五周五周五周五周五周五周五周五(35周五周五周五????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????#B###“]; var regex=/###(A | B)##(?!\1)[AB]####/; 测试。forEach(功能(测试){ console.log(test,“=>”,regex.test(test));
});你确定这是用javascript编写的吗?我知道JS regexps中没有
\1
@ibrahimmahrir Well,
新的RegExp(/###((A)|(B))##A###1###/)。test(##B###########""
按预期返回
true
。并且对所有输入都很有效。谢谢!祝你下次好运!哇!这里的逻辑很棒,也很有趣!感谢您提供的解决方案,特别是教授以下内容:)