Javascript 如何使用捕获括号捕获多个引用
我试图从文本中仅提取关键字符串部分“ProcessName”和“ProcessID”。 文本可以有更多的键。(为了简单起见,我只使用带有两个键的文本) 是否可以捕获该组的多个事件Javascript 如何使用捕获括号捕获多个引用,javascript,regex,Javascript,Regex,我试图从文本中仅提取关键字符串部分“ProcessName”和“ProcessID”。 文本可以有更多的键。(为了简单起见,我只使用带有两个键的文本) 是否可以捕获该组的多个事件 var text = "[ProcessName] - [ProcessID]"; var regex = new RegExp(/\[[(A-Za-z0-9)]+\]/g); var result = regex.exec(text); console.log(result); var regex = new Re
var text = "[ProcessName] - [ProcessID]";
var regex = new RegExp(/\[[(A-Za-z0-9)]+\]/g);
var result = regex.exec(text);
console.log(result);
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
当我使用exec时,它只给了我一个匹配项,并且带有括号,所以它似乎没有任何用处。
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
还尝试了match(),但它包含方括号。尝试了很多次,但似乎都做不好
var result = text.match(regex);
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
您将圆括号和方括号放错位置,从而使捕获组成为角色类的一部分,从而阻止创建子匹配
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
您需要交换括号的位置:
/\[([a-z0-9]+)]/gi
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
请参阅下面的示例和JS演示
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
图案细节:
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
-文字\[
[
-第1组捕获一个或多个字母数字([a-z0-9]+)
-一个文本结束括号(当它位于字符类之外时,无需转义)]
-全局和不区分大小写的匹配修饰符(/gi
也将匹配[a-z]
,处理每个不重叠的匹配)a-z
var re=/\[([a-z0-9]+)]/gi;
var str='[ProcessName]-[ProcessID]';
var-res=[];
while((m=re.exec(str))!==null){
res.push(m[1]);
}
console.log(res);
在我提出一个问题后不久,我找到了答案
var regex = new RegExp(/\[([A-Za-z0-9]+)\]/g);
var matches, output = [];
while (matches = regex.exec(text))
{
output.push(matches[1]);
}
你知道你的模式匹配什么吗?
\[[(A-Za-z0-9)]+\]
匹配一个[
,后跟一个或多个(
,字母,数字,)
,然后匹配尾随的]
。这里没有捕获组。你真正想要匹配的是什么?一个[…]
中的字母数字?使用/\[[A-z0-9]+]/ig
与RegExp#exec
在一个循环中。访问匹配[1]值。最好运行console.log(JSON.stringify(result))
并包含结果文本,而不是发布结果的图像……请注意RegExp#exec
和/\[([a-z0-9]+)]/gi
regex在这里是齐头并进的,如果您需要使用没有全局标志的regex(只匹配一个匹配项),那么只需使用String 35; match
。