我需要匹配表达式并使用命名组从中提取值。
让我们说这是我的字符串:
var str = 'element=123'
所以我想使用正则表达式匹配它并提取元素和值。
我知道如何做到这一点是c#,我想在JS中弄明白。
这是我的正则表达式:
new RegExp(/^(<element>[A-Za-z0-9])+=[A-Za-z0-9]+$/);
我做错了什么?
答案 0 :(得分:7)
您必须使用编号组。
例如:
var myregex = /([^=]+)=(.*)/;
var matchArray = myregex.exec(yourString);
if (matchArray != null) {
element = matchArray[1];
id = matchArray[2];
}
选项2:XRegExp
JavaScript XregexP的备用正则表达式库支持命名捕获以及JS正则表达式中缺少的其他重要正则表达式功能,例如lookbehinds。
答案 1 :(得分:6)
现在,使用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
)
语法参考: https://github.com/tc39/proposal-regexp-named-groups
Firefox还没有决定,但这是Mozilla问题跟踪器中的一个条目: https://bugzilla.mozilla.org/show_bug.cgi?id=1362154