嗨,我有一个像"john ka [12345678]"
和"james james [12121212]"
之类的字符串。
如何在“ []”中拆分字符串并获取值。
预期输出为12345678
和12121212
,
我尝试了分割方法。
string1 = "john ka [12345678]"
string2 = "james james [12121212]"
// etc.
输出应为 12345678和12121212
答案 0 :(得分:2)
var result = string1.substring(string1.indexOf( '[' ) +1, string1.indexOf( ']' ));
答案 1 :(得分:1)
尝试
var matches = string1.match(/\[(.*?)\]/);
这应该返回方括号之间的所有字符串的数组,对于第一个匹配项,仅返回结果数组中的第二项。
var value = matches[1];
其他答案都指向使用split和substring,这将起作用,但是,如果正则表达式可用,则在这种情况下应使用它们,因为您希望将模式“ [”作为开头,将“]”匹配为结束。这种方法更加健壮,因为它可以智能地搜索所需字符串的位置,而不是假设位置。
答案 2 :(得分:0)
该演示有两种提取括号之间数字的方法:[...]
.replace()
str.replace(/.+?\[([0-9]+?)\]/g, '$1 ')
.split()
和.filter()
str.split(/\[|\]/); arr.filter(function(num) { return parseInt(num, 10); });
var str = `john ka [12345678] and james james [12121212]`;
/*Regex replace()===================*/
var rgx = /.+?\[([0-9]+?)\]/g;
var R1 = str.replace(rgx, '$1 ');
console.log(R1);
/*Array split() and filter()========*/
var arr = str.split(/\[|\]/);
var R2 = arr.filter(function(num) {
return parseInt(num, 10);
});
console.log(R2);
答案 3 :(得分:-1)
如果只想得到方括号中的数字,则可以使用以下方法:
string1.match(/(?<=\[)[0-9]+(?=\])/g)[0]
这将为您提供帮助,即使您在方括号中有其他任何文本,例如:
var string1 = "john [abc] ka [12345678]";
输出将为:12345678
编辑:
由于lookbehind仅在支持ECMA2018的浏览器中可用,因此无需使用lookbehind即可添加另一种解决方案:
var string1 = "john [abc] ka [12345678]";
new RegExp(/(?:\[)([0-9]+)(?=\])/, 'g').exec(string1)[1];