如何拆分并获取字符串值

时间:2019-02-11 17:19:59

标签: javascript split

嗨,我有一个像"john ka [12345678]""james james [12121212]"之类的字符串。 如何在“ []”中拆分字符串并获取值。 预期输出为1234567812121212

我尝试了分割方法。

string1 = "john ka [12345678]"
string2 = "james james [12121212]"
// etc.

输出应为 12345678和12121212

4 个答案:

答案 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)

提取数字的两种方式

该演示有两种提取括号之间数字的方法:[...]

  1. 正则表达式模式和字符串方法.replace()
str.replace(/.+?\[([0-9]+?)\]/g, '$1 ')
  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];