“为什么?”;string.matchall不是一个函数;即使我使用javascript传递字符串,也会弹出错误?

“为什么?”;string.matchall不是一个函数;即使我使用javascript传递字符串,也会弹出错误?,javascript,regex,selenium,Javascript,Regex,Selenium,我正在使用string.matchAll()来匹配字符串中的模式。这样做时,我得到一个类型错误string.matchAll不是一个函数 考虑字符串输入“我是字符串” 我使用下面的代码查找字符串中的模式。虽然字符串不包含我正在寻找的模式,但它仍然可以正常工作。但是,有时会出现类型错误 match_pattern = (string_to_parse) => { const pattern = /\[\d+@(?<name>[^\]\r\n]*)]/g; cons

我正在使用
string.matchAll()
来匹配字符串中的模式。这样做时,我得到一个类型错误
string.matchAll不是一个函数

考虑字符串输入“我是字符串”

我使用下面的代码查找字符串中的模式。虽然字符串不包含我正在寻找的模式,但它仍然可以正常工作。但是,有时会出现类型错误

match_pattern = (string_to_parse) => {
    const pattern = /\[\d+@(?<name>[^\]\r\n]*)]/g;
    const matches = string_to_parse.matchAll(pattern);
    let prev_match_pos = 0;
    const string_parts = [];
    for (const match of matches) {
        string_parts.push(string.substring(prev_match_pos, match.index));
        string_parts.push(<strong>{match.groups.name}</strong>);
        prev_match_pos = match.index + match[0].length;
    }
    string_parts.push(string_to_parse.substring(prev_match_pos, 
    string.length));
    return string_parts;
};
match_pattern=(字符串要解析)=>{
常量模式=/\[\d+@(?[^\]\r\n]*)]/g;
const matches=string_to_parse.matchAll(模式);
让prev_匹配_pos=0;
常量字符串_部分=[];
for(连续匹配){
string_parts.push(string.substring(prev_match_pos,match.index));
string_parts.push({match.groups.name});
prev\u match\u pos=match.index+match[0]。长度;
}
string\u parts.push(string\u to\u parse.substring(prev\u match\u pos,
字符串长度);
返回字符串或部件;
};
因为这个带有模式的字符串工作得很好 “我是一个[1@string你好!"

但是字符串“我是字符串”存在类型错误问题。有人能告诉我有什么问题吗

谢谢。

这里有两个问题:

1-此行缺少引号(编辑:或字符串文字?):

因此,代码变成:

match_pattern = (string_to_parse) => {
    const pattern = /\[\d+@(?<name>[^\]\r\n]*)]/g;
    const matches = string_to_parse.matchAll(pattern);
    let prev_match_pos = 0;
    const string_parts = [];
    for (const match of matches) {
        string_parts.push(string.substring(prev_match_pos, match.index));
        string_parts.push(`<strong>${match.groups.name}</strong>`);
        prev_match_pos = match.index + match[0].length;
    }
    string_parts.push(string_to_parse.substring(prev_match_pos, 
    string_to_parse.length));
    return string_parts;
};
match_pattern=(字符串要解析)=>{
常量模式=/\[\d+@(?[^\]\r\n]*)]/g;
const matches=string_to_parse.matchAll(模式);
让prev_匹配_pos=0;
常量字符串_部分=[];
for(连续匹配){
string_parts.push(string.substring(prev_match_pos,match.index));
string_parts.push(`${match.groups.name}`);
prev\u match\u pos=match.index+match[0]。长度;
}
string\u parts.push(string\u to\u parse.substring(prev\u match\u pos,
字符串_to_parse.length));
返回字符串或部件;
};
这在我的浏览器上似乎可以正常工作。

这里有两个问题:

1-此行缺少引号(编辑:或字符串文字?):

因此,代码变成:

match_pattern = (string_to_parse) => {
    const pattern = /\[\d+@(?<name>[^\]\r\n]*)]/g;
    const matches = string_to_parse.matchAll(pattern);
    let prev_match_pos = 0;
    const string_parts = [];
    for (const match of matches) {
        string_parts.push(string.substring(prev_match_pos, match.index));
        string_parts.push(`<strong>${match.groups.name}</strong>`);
        prev_match_pos = match.index + match[0].length;
    }
    string_parts.push(string_to_parse.substring(prev_match_pos, 
    string_to_parse.length));
    return string_parts;
};
match_pattern=(字符串要解析)=>{
常量模式=/\[\d+@(?[^\]\r\n]*)]/g;
const matches=string_to_parse.matchAll(模式);
让prev_匹配_pos=0;
常量字符串_部分=[];
for(连续匹配){
string_parts.push(string.substring(prev_match_pos,match.index));
string_parts.push(`${match.groups.name}`);
prev\u match\u pos=match.index+match[0]。长度;
}
string\u parts.push(string\u to\u parse.substring(prev\u match\u pos,
字符串_to_parse.length));
返回字符串或部件;
};

现在,这在我的浏览器上似乎可以正常工作。

您使用的是哪种浏览器?它能正常工作吗
string\u parts.push({match.groups.name}?IE、Edge或Safari显然不支持。是的,它工作正常,我正在使用chrome浏览器手动执行此字符串操作时,我没有看到错误。但是当我使用selenium robot测试时,我看到了这个错误。您使用的是哪个浏览器?它能工作吗
string\u parts.push({match.groups.name}?IE、Edge或Safari显然不支持。是的,它工作正常,我正在使用chrome浏览器手动执行此字符串操作时,我没有看到错误。但是当我使用selenium robot测试时,我看到了这个错误。
match_pattern = (string_to_parse) => {
    const pattern = /\[\d+@(?<name>[^\]\r\n]*)]/g;
    const matches = string_to_parse.matchAll(pattern);
    let prev_match_pos = 0;
    const string_parts = [];
    for (const match of matches) {
        string_parts.push(string.substring(prev_match_pos, match.index));
        string_parts.push(`<strong>${match.groups.name}</strong>`);
        prev_match_pos = match.index + match[0].length;
    }
    string_parts.push(string_to_parse.substring(prev_match_pos, 
    string_to_parse.length));
    return string_parts;
};