Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 RegExp-如何仅在A在X之前,B在X之后时匹配X_Javascript_Regex - Fatal编程技术网

Javascript RegExp-如何仅在A在X之前,B在X之后时匹配X

Javascript RegExp-如何仅在A在X之前,B在X之后时匹配X,javascript,regex,Javascript,Regex,给定字符串“AXB”, 我只想在A在X之前,B在X之后时匹配X。但是我不想在返回的匹配中使用A或B 我知道B可以这样做:/X(?=B)/但我不确定A(赛前)是否有类似的方法 谢谢。使用捕获组捕获值,然后参考组#1访问您的匹配项 /A(X)B/ 例如: console.log('AXB'.match(/A(X)B/)[1]); //=> 'X' 像这样: var the_captures = []; var yourString = 'your_test_string' var myr

给定字符串“AXB”, 我只想在A在X之前,B在X之后时匹配X。但是我不想在返回的匹配中使用A或B

我知道B可以这样做:/X(?=B)/但我不确定A(赛前)是否有类似的方法


谢谢。

使用捕获组捕获值,然后参考组
#1
访问您的匹配项

/A(X)B/
例如:

console.log('AXB'.match(/A(X)B/)[1]); //=> 'X'
像这样:

var the_captures = []; 
var yourString = 'your_test_string'
var myregex = /A(X)B/g;
var thematch = myregex.exec(yourString);
while (thematch != null) {
    // add it to array of captures
    the_captures.push(thematch[1]);
    document.write(thematch[1],"<br />");    
    // match the next one
    thematch = myregex.exec(yourString);
}
var_捕获=[];
var yourString='your\u test\u string'
var myregex=/A(X)B/g;
var thematch=myregex.exec(您的字符串);
while(匹配!=null){
//将其添加到捕获数组中
_捕获.push(匹配[1]);
写(匹配[1],“
”); //匹配下一个 match=myregex.exec(您的字符串); }
解释

  • A
    与文本
    A
  • (X)
    匹配
    X
    并将其捕获到组1
  • B
    匹配
    B
  • 脚本返回组1:
    match[1]
其他语言

JavaScript没有lookarounds或
\K
。在支持这些功能的语言中,您可以直接匹配
X
,而无需捕获组:

  • A\KX(?=B)
    (使用lokahead和
    \K
    ,这会告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项)

  • (?这将返回“AXB”和“X”作为matchCharles,括号将
    X
    捕获到组1。您检查组1,如果未设置,则不存在匹配。请参阅我的答案中的示例代码,它使用相同的正则表达式。@hwnd谢谢hwnd。虽然不是默认内置的,但却是最简单的解决方法。Charles,很高兴提供帮助。我知道现在发生了什么-Js需要实现向前看。