Javascript 如何在先行表达式中匹配行首和空格

Javascript 如何在先行表达式中匹配行首和空格,javascript,regex,Javascript,Regex,我相信这真的很容易,但我如何匹配 匹配行的开头或空格 匹配a-z 匹配行的结尾或空格 我只想为下面的字符串返回项目2 "one 1.ignore two 2ignore ignore3 three" 表达式将返回 ["one","two","three"] 谢谢使用此代码: var str = 'one 1.ignore two 2ignore ignore3 three'; str = str.replace(/\s(?=[a-z])/ig, function(text, p1) {

我相信这真的很容易,但我如何匹配

  • 匹配行的开头或空格
  • 匹配a-z
  • 匹配行的结尾或空格
  • 我只想为下面的字符串返回项目2

    "one 1.ignore two 2ignore ignore3 three"
    
    表达式将返回

    ["one","two","three"]
    
    谢谢使用此代码:

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

    您需要查找与这些项匹配的正则表达式,这在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]+$/));
    

    刚刚在chrome中尝试了您的表达式,它返回
    [“一”、“二”、“三”]
    。我不希望表达式返回之前或之后的任何空格。javascriptIt不支持look-behinds。它实现了我想要的功能,但我将等待,看看是否有人可以给我一个正则表达式来执行此操作。当然,即使是我也在热切地等待一个基于正则表达式的答案,尽管从您的需求来看,获得一个答案似乎有点困难。对于第1项,您将需要lookback,这在javascript中是不受支持的。这似乎是一个直截了当的请求。但这一点是正确的。也许有人能找到解决这个问题的办法。