我正在编写js代码,以便在使用正则表达式进行拆分后获取元素数组。
var data = "ABCXYZ88";
var regexp = "([A-Z]{3})([A-Z]{3}d{2})";
console.log(data.split(regexp));
它返回 [' ABCXYZ88' ]
但我期待类似的东西 [' ABC'' XYZ'' 88']
有什么想法吗?
答案 0 :(得分:1)
我修复了你的正则表达式,然后将它与你的字符串匹配并提取相关的捕获组:
var regex = /([A-Z]{3})([A-Z]{3})(\d{2})/g;
var str = 'ABCXYZ88';
let m = regex.exec(str);
if (m !== null) {
console.log(m.slice(1)); // prints ["ABC", "XYZ", "88"]
}
在您的情况下,我认为您不能像正在尝试那样使用正则表达式拆分,因为似乎没有任何分隔字符可供匹配。为此,你必须有一个像'ABC|XYZ|88'
这样的字符串;然后你可以做'ABC|XYZ|88'.split(/\|/g)
。 (当然,你不会在这种简单的情况下使用正则表达式。)
答案 1 :(得分:1)
regexp
不是RegExp
个对象,而是string
。String.prototype.split()
不是您需要的功能。 split()
的作用:var myString = 'Hello World. How are you doing?';
var splits = myString.split(' ', 3);
console.log(splits); // ["Hello", "World.", "How"]
您需要什么:
var data = 'ABCXYZ88';
var regexp = /^([A-Z]{3})([A-Z]{3})(\d{2})$/;
var match = data.match(regexp);
console.log(match.slice(1)); // ["ABC", "XYZ", "88"]
答案 2 :(得分:0)
试试这个。我希望这就是你要找的东西。
var reg = data.match(/^([A-Z]{3})([A-Z]{3})(\d{2})$/).slice(1);