我希望在冒号之前和之后获得正则表达式

时间:2017-03-05 09:15:12

标签: javascript regex

以下是我的字符串示例:

or id:bBkeed 
or name:Michael
or surname:Kronenberg 

以下是具有相同类型的不同值的数组,我需要在冒号和冒号之后创建一个值数组。

const afterDOT = splitedValue[index].substring(splitedValue[index].indexOf(':') + 1);
const beforeDOT = splitedValue[index].substring(0, splitedValue[index].indexOf(':'));
afterDOTS.push(afterDOT);
beforeDOTS.push(beforeDOT);

我需要做同样的事情,但正则表达式可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您可以尝试:

([^:\s]+):([^:\s]+)

Explanation



const regex = /([^:\s]+):([^:\s]+)/g;
const str = `id:bBkeed or name:Michael or surname:Kronenberg`;
let m;

var before=[];
var after=[];

while ((m = regex.exec(str)) !== null) {
    before.push(m[1]);
    after.push(m[2]);
}
console.log(before);
console.log(after);




答案 1 :(得分:0)

您只需使用.match(regex)

即可

var str = "abc:xyz";
var first = str.match(/(.*):/g).pop().replace(":","");
var last = str.match(/:(.*)/g).pop().replace(":","");

console.log("String : " + str, "\nfirst : " + first, "\nlast : " + last);

您可以根据自己的情况轻松扩展此功能。见下文:

var string = "abc:xyz id:234 surname:kronenberg";

string.split(" ").forEach(function(str) {
  var first = str.match(/(.*):/g).pop().replace(":", "");
  var last = str.match(/:(.*)/g).pop().replace(":", "");
  console.log("first:" + first, "last:" + last);
});