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技术上支持。