Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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 如何匹配Y之后的所有X?_Javascript_Regex - Fatal编程技术网

Javascript 如何匹配Y之后的所有X?

Javascript 如何匹配Y之后的所有X?,javascript,regex,Javascript,Regex,我有这个字符串: A1xB2xC3yD4xE5xF6x 我想匹配(然后替换)每个x,但只匹配y之后的。预期匹配:x,x,x。 我试过这个: (?<=y)x (?<=.*y.*)x 但是显然*甚至+符号都是无效的,如果在该组中使用,就会抛出错误 有什么办法可以做我想做的事吗 解决方案不能是“最后3个x”,因为y之后的x数量未知。Moden Javascript正则表达式引擎允许长度可变的查找断言,因此查看您的问题,此正则表达式应该适用于您: /(?<=y[^y]*)x/gi

我有这个字符串:

A1xB2xC3yD4xE5xF6x
我想匹配(然后替换)每个
x
,但只匹配
y
之后的。预期匹配:
x
x
x
。 我试过这个:

(?<=y)x
(?<=.*y.*)x
但是显然
*
甚至
+
符号都是无效的,如果在该组中使用,就会抛出错误

有什么办法可以做我想做的事吗


解决方案不能是“最后3个
x
”,因为
y
之后的
x
数量未知。

Moden Javascript正则表达式引擎允许长度可变的查找断言,因此查看您的问题,此正则表达式应该适用于您:

/(?<=y[^y]*)x/gi

/(?你的正则表达式语言是什么?我正在使用,但忘了将其更改为JavaScript。我刚刚更改了,它可以工作。那么我应该结束这个问题吗?找到第一个
y
在哪里,从该索引创建一个子字符串,并在该子字符串中匹配
x
?在JavaScript
/(?如果您发现了解决方案,请在下面自己的答案中进行描述。如果社区认为该解决方案使问题偏离主题,则该问题将被关闭。如果您认为该问题不值得任何努力,则请将其删除(关闭不是您的选项,但可能您的意思是删除)。“但显然,
*
甚至
+
符号都无效,如果在该组中使用,则会引发错误”表明他们的引擎不支持可变长度lookbehind。因此JavaScript正则表达式实际上是最高级的?@GirkovArpa
.NET
也支持可变长度lookbehind。这不区分大小写,因此假设没有“xXyY”除了特殊的,不是吗?也就是说,任何地方都不应该有X9或Y9或类似的。从提供的样本输入来看,这似乎是一个合理的假设。但是你同意这个假设吗?@anubhava:这在问题的主体中。当这个答案起作用时,他们原来的正则表达式也会起作用。(不过,这是一个更高效的版本。)