我需要匹配表达式并使用命名组从中提取值.
让我们说这是我的字符串:
var str = 'element=123'
Run Code Online (Sandbox Code Playgroud)
所以我想使用正则表达式匹配它并提取元素和值.
我知道如何做到这一点是c#,我试图在JS中解决它.
这是我的正则表达式:
new RegExp(/^(<element>[A-Za-z0-9])+=[A-Za-z0-9]+$/);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您必须使用编号组.
例如:
var myregex = /([^=]+)=(.*)/;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
element = matchArray[1];
id = matchArray[2];
}
Run Code Online (Sandbox Code Playgroud)
选项2:XRegExp
JavaScript XregexP的备用正则表达式库支持命名捕获以及JS正则表达式中缺少的其他重要正则表达式功能,例如lookbehinds.
现在,使用ES2018,实际上可以使用RegExp命名捕获组。
这是一个已经在Chrome 64中运行的示例(即将在Safari中提供)。
const isoDateExpression = /(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})/;
let match = isoDateExpression.exec('1999-12-31');
console.log(
match.groups.year, // 1999
match.groups.month, // 12
match.groups.day, // 31
)
Run Code Online (Sandbox Code Playgroud)
语法参考:https : //github.com/tc39/proposal-regexp-named-groups
Firefox尚未决定,但这是Mozilla问题追踪器中的一个条目:https : //bugzilla.mozilla.org/show_bug.cgi? id =1362154