Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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:命名捕获组_Javascript_Regex - Fatal编程技术网

Javascript:命名捕获组

Javascript:命名捕获组,javascript,regex,Javascript,Regex,我需要匹配表达式并使用命名组从中提取值 假设这是我的字符串: var str = 'element=123' 所以我想用正则表达式匹配它并提取元素和值 我知道怎么做是c#,我正试图用JS解决这个问题 这是我的正则表达式: new RegExp(/^(<element>[A-Za-z0-9])+=[A-Za-z0-9]+$/); newregexp(/^([A-Za-z0-9])+=[A-Za-z0-9]+$/); 我做错了什么?JavaScript不支持命名捕获组。 您必须使用

我需要匹配表达式并使用命名组从中提取值

假设这是我的字符串:

var str = 'element=123'
所以我想用正则表达式匹配它并提取元素和值

我知道怎么做是c#,我正试图用JS解决这个问题

这是我的正则表达式:

new RegExp(/^(<element>[A-Za-z0-9])+=[A-Za-z0-9]+$/);
newregexp(/^([A-Za-z0-9])+=[A-Za-z0-9]+$/);
我做错了什么?

JavaScript不支持命名捕获组。 您必须使用编号的组

例如:

var myregex = /([^=]+)=(.*)/;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
    element = matchArray[1];
    id = matchArray[2];

} 
选项2:XRegExp

JavaScript的备用正则表达式库支持命名捕获以及JS正则表达式中缺少的其他重要正则表达式功能,如lookbehinds。

JavaScript不支持命名捕获组。 您必须使用编号的组

例如:

var myregex = /([^=]+)=(.*)/;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
    element = matchArray[1];
    id = matchArray[2];

} 
选项2:XRegExp


JavaScript的备用正则表达式库支持命名捕获以及JS正则表达式中缺少的其他重要正则表达式功能,如lookbehinds。

现在,使用ES2018,可以使用正则表达式命名捕获组

下面是一个已经在Chrome64中运行的示例(很快也将在Safari中提供)

const isoDateExpression=/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/;
让match=isoDateExpression.exec('1999-12-31');
console.log(
match.groups.year,//1999
match.groups.month,//12
match.groups.day,//31
)
语法参考:

Firefox尚未决定,但Mozilla的问题跟踪程序中有一个条目:

现在,使用ES2018,可以使用RegExp命名的捕获组

下面是一个已经在Chrome64中运行的示例(很快也将在Safari中提供)

const isoDateExpression=/(?[0-9]{4})-(?[0-9]{2})-(?[0-9]{2})/;
让match=isoDateExpression.exec('1999-12-31');
console.log(
match.groups.year,//1999
match.groups.month,//12
match.groups.day,//31
)
语法参考:

Firefox尚未决定,但Mozilla的问题跟踪程序中有一个条目:

如果字符串“str”上有一个设置模式,则可以使用slit by(“=”)分别读取键和值。e、 g.str.split('=')[0],str.split('=')[1],如果要避免使用正则表达式,请使用一个简短的方法。如果字符串“str”上有一个设置模式,则可以使用slit by(“=”)分别读取键和值。e、 g.str.split('=')[0],str.split('=')[1],如果你想避免使用正则表达式,这只是一个简单的方法。谢谢,很高兴它能帮上忙!:)过时的答案。不,这不是过时的-很多主流浏览器仍然不支持命名捕获组,尽管JS技术上支持。谢谢,很高兴它帮助了我们!:)过时的答案。不,这不是过时的-许多主流浏览器仍然不支持命名捕获组,尽管JS技术上支持。