Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这些带反向引用的正则表达式有什么问题?_Javascript_Regex - Fatal编程技术网

Javascript 这些带反向引用的正则表达式有什么问题?

Javascript 这些带反向引用的正则表达式有什么问题?,javascript,regex,Javascript,Regex,我正在尝试制作一个正则表达式,它将匹配两次幂的x。我正在使用JavaScript。我试过这个: ^(x\1?)$ 但它不起作用。\1不是指外部的并列词吗,所以它应该匹配xx,因此也应该匹配xxxx,等等 我尝试了一个更简单的方法,我认为可以匹配x和xx: ^((x)|(\2{2}))$ 但这只匹配x 我做错了什么?你不能做“递归反向引用”。至少,这不是那么容易 我不确定这里是否需要递归正则表达式。也许您可以只计算字符串中的字符数,然后检查它是否等于二的幂 但如果您真的需要递归正则表达式(我几

我正在尝试制作一个正则表达式,它将匹配两次幂的
x
。我正在使用JavaScript。我试过这个:

^(x\1?)$
但它不起作用。
\1
不是指外部的并列词吗,所以它应该匹配
xx
,因此也应该匹配
xxxx
,等等

我尝试了一个更简单的方法,我认为可以匹配x和xx:

^((x)|(\2{2}))$
但这只匹配
x

我做错了什么?

你不能做“递归反向引用”。至少,这不是那么容易

我不确定这里是否需要递归正则表达式。也许您可以只计算字符串中的字符数,然后检查它是否等于二的幂

但如果您真的需要递归正则表达式(我几乎可以肯定,您不需要), 您可以检查以下问题:

还有这个博客


我不认为反向引用可以引用它本身是其一部分的捕获组。因此,您希望它能够匹配x、xx、xxxx、xxxxxxxx(8,16,32)等??是的,这就是我想要的。我认为两个的幂将由
^((x)|(\1{2})匹配)$
是否正常工作:-)我可以使用正则表达式计算字符数吗?另外,我的第二个更简单的正则表达式如何。你知道这有什么错吗?第二个正则表达式是错的,因为你在其中做了选择,并且在一个选择中有()-部分,在另一个选择中有反向引用。那是行不通的。如果它们匹配,你可以使用反向引用。我可以从那里引用反向引用吗?@Joe:当然可以。但只有与之匹配的