如何在先行表达式中匹配行和空格的开头

时间:2012-11-30 11:24:13

标签: javascript regex

我确信这很简单,但如何匹配

  1. 匹配行开头或空格
  2. 匹配a-z
  3. 匹配行尾或空格
  4. 我只想退回商品号码。 2对于以下字符串

    "one 1.ignore two 2ignore ignore3 three"
    

    表达式将返回

    ["one","two","three"]
    

    由于

2 个答案:

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