Javascript RegExp-如何仅在A在X之前,B在X之后时匹配X
给定字符串“AXB”, 我只想在A在X之前,B在X之后时匹配X。但是我不想在返回的匹配中使用A或B 我知道B可以这样做:/X(?=B)/但我不确定A(赛前)是否有类似的方法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
谢谢。使用捕获组捕获值,然后参考组
#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)
并将其捕获到组1X
匹配B
B
- 脚本返回组1:
match[1]
\K
。在支持这些功能的语言中,您可以直接匹配X
,而无需捕获组:
(使用lokahead和A\KX(?=B)
,这会告诉引擎放弃与其返回的最终匹配项相距甚远的匹配项)\K
(?这将返回“AXB”和“X”作为matchCharles,括号将
捕获到组1。您检查组1,如果未设置,则不存在匹配。请参阅我的答案中的示例代码,它使用相同的正则表达式。@hwnd谢谢hwnd。虽然不是默认内置的,但却是最简单的解决方法。Charles,很高兴提供帮助。我知道现在发生了什么-Js需要实现向前看。X