我正在寻找一种方法来获取捕获组的正则表达式规则。
所以,如果我有:/(\w) (\d)/
,我希望$1 = /\w/
和$2 = /\d/
。
有这方法吗?
答案 0 :(得分:1)
如果正则表达式有效且没有使用嵌套组,那么你可以试试这个。
var arr = (regex + "").match(/\(.*?\)/g).map(function(rule){
return rule.replace(/[()]/g, "");
});
现在,arr[0]
将具有group1规则,arr[1]
将为group2,依此类推。
答案 1 :(得分:0)
虽然我不知道在/(rule1)(rule2)/
给出的正则表达式规则上执行此操作的任何直接方法,但您可以使用字符串构建正则表达式规则并指定不同字符串中的分组。
var group1 = '([A-Za-z]+)',
group2 = '(\\d+)',
r = new RegExp(group1+group2);
r.test('hello1234');
要从正则表达式字符串中获取组,您可以在该正则表达式字符串上运行正则表达式以提取组。如果你的正则表达式字符串是"(\w+)(\d+)"
,那么你有一个正则表达式来提取组/(\([^\)\))+/