如何在匹配的单词(包括正则表达式中的匹配单词)之后直接获取引用
实施例
var refArray = [];
var str = "matt 25:5 hello foo bar matt 5:10"; // unknown information
var pattern = "matt"; // looped through an object to get pattern
var regex = new RegExp(pattern,"gi");
var matches = str.match(regex); // check for any name matches
if(matches){
/*
This is where I get stuck
Get the numbers right after each match
and place both name and number into a variable AKA. result
*/
refArray.push($result);
}
// The refArray should output [matt 25:5, matt 5:10]
感谢您的帮助,非常感谢
修改
我希望能够匹配所有参考可能性AKA示例...... 马特|马特5 |马太福音5:5 |马太福音5:5-10 |马太福音5:5-10,12 |马太福音5:5-10,12-14
修改
这是我提出的正则表达式here
我正在尝试匹配所有可能的引用
亚光
亚光5
亚光5,6,7 亚光5:5
亚光5:5-10
亚光5:5-10,16,
亚光5:5-10,16-20,18-20
亚光5-6
根据我所在的网站,但是当我将代码粘贴到我的页面时,它仍然只提供了名称。
正则表达式是......
(matt( \d*(\:\d*)?(\-\d*)?((, (\d*\-)?\d*)?)+)?(?!\w))
我做错了什么?
答案 0 :(得分:1)
我认为这就是你想要的
var refArray = [];
var str = "matt 25:5 hello foo bar matt 5:10";
var pattern = "matt \\d+:\\d+";
var regex = new RegExp(pattern,"gi");
refArray = str.match(regex);
alert(refArray);
// The result is [matt 25:5, matt 5:10]
match
返回匹配的字符串数组或返回null,不匹配字符串。matt
匹配,然后跟number:number
匹配。与此字符串匹配的正则表达式应为matt \d+:\d+
答案 1 :(得分:1)
这是我用于此类正则表达式匹配的函数。它需要一个字符串,一个带捕获组的正则表达式,一个可以访问这些组的回调。 this
是一个分配匹配项的对象,以及return this
输出对象:
function matchAll(str, regex, fn) {
var result = [];
str.replace(regex, function() {
var args = [].slice.call(arguments, 1);
result.push(fn.apply([], args));
});
return result;
}
var str = 'matt 25:5 hello foo bar matt 5:10';
var name = 'matt';
var regex = RegExp('('+ name +') (\\d+:\\d+)', 'gi');
var result = matchAll(str, regex, function(name, number) {
this.push(name, number);
return this;
});
//^
// [
// ['matt', '25:5']
// ['matt', '5:10']
// ]
答案 2 :(得分:0)
好的经过几天的努力,我找到了自己的解决方案......感谢您的帮助...
var pattern = '([0-9][ ]|[0-9]?)([a-z]+)([.]?[ ]?)((([0-9]{1,3})(:[0-9{1,3}](-[0-9]{1,3})*)*([-, ?])*)+)';
var rxref = new RegExp(pattern, "gi");
var refArray = str.match(rxref); // get the match with digits and put them inside an array