从字符串中选取元素并推入数组

时间:2017-02-18 06:43:50

标签: javascript regex lodash

我有这样的要求。

输入字符串Please choose one \n 1. optionA \n 2. optionB \n 3. optionC

Please choose one can be any text可以包含任何文字。从此\nend of line将具有完全相同的格式,包括间距。 optionAoptionBoptionC是动态的。

我想将optionAoptionBoptionC推送到数组中。我一直在试用Regex和Javascript,但没有成功。我该怎么做?

我使用了来自lodash和正则表达式_.words的{​​{1}}。首先,正则表达式没有返回单词

帮帮我

4 个答案:

答案 0 :(得分:1)

检查一下。 它仅适用于您在问题中提到的格式化文本。
由于不完全清楚您是否使用不同的字符串,我会给您这个解决方案。
如果您这样做,请发表评论

var str="This can be any string ending with\n 1. any_option \n 2. can_be_placed \n 3. without_space";
var opt=str.replace(/^[^\n]*\n\s?\d+.\s?/g,'');
opt=opt.replace(/\s?\n\s?\d+.\s?/g,',').split(',');
console.log(opt);

答案 1 :(得分:1)

使用Array.prototype.match()Array.prototype.map()函数的解决方案:

var s = 'Please choose one \n 1. optionA \n 2. optionB \n 3. optionC',
    options = s.match(/\n \d+\. (\w+)/g).map(function(v){
        return v.trim().split(' ')[1];
    });

console.log(options);

答案 2 :(得分:1)

我建议使用split

var input = 'Please choose one \n 1. optionA \n 2. optionB \n 3. optionC';
var options = input.split(/\s*?\n\s*\d+\.\s*/).slice(1);
console.log(options);

答案 3 :(得分:0)

试试这个...

var inputString = 'Please choose one\n 1. option_1 \n 2. option_2 \n 3. option_2';
var matchedList = inputString.match(/\b\w*[_]\w*\b/g);
console.log(matchedList);

输出matchedList数组

[“option_1”,“option_2”,“option_2”]