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) {
"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中是不受支持的。这似乎是一个直截了当的请求。但这一点是正确的。也许有人能找到解决这个问题的办法。