我有这样的要求。
输入字符串Please choose one \n 1. optionA \n 2. optionB \n 3. optionC
Please choose one can be any text
可以包含任何文字。从此\n
到end of line
将具有完全相同的格式,包括间距。 optionA
,optionB
和optionC
是动态的。
我想将optionA
,optionB
和optionC
推送到数组中。我一直在试用Regex和Javascript,但没有成功。我该怎么做?
我使用了来自lodash和正则表达式_.words
的{{1}}。首先,正则表达式没有返回单词
帮帮我
答案 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”]