我确信这很简单,但如何匹配
我只想退回商品号码。 2对于以下字符串
"one 1.ignore two 2ignore ignore3 three"
表达式将返回
["one","two","three"]
由于
答案 0 :(得分:2)
你需要lookbehind一个匹配这些项的正则表达式,这在javascript中是不受支持的。您可以进行手动迭代并提取匹配组(如@ Some1.Kill.The.DJ所示),或者您要拆分字符串而不是匹配:
str.split(/\s+(?:\S*?(?![a-z])\S+\s+)*/);
此表达式匹配所有空格以及包含至少一个非[a-z]
字符的单词。但是,这个正则表达式很复杂,不易维护;它有时会产生空字符串。更好,做点什么
str.split(/\s+/).filter(RegExp.prototype.test.bind(/^[a-z]+$/));
答案 1 :(得分:0)
使用此代码:
var str = 'one 1.ignore two 2ignore ignore3 three';
str = str.replace(/\s(?=[a-z])/ig, function(text, p1) {
return p1 ? p1 : text;
});
var arr = str.match(/([a-z]+)(?=\s|$)/ig);