Javascript 正则表达式:基于第一次出现的拆分字符串,带有occurance
我的正则表达式很差。请同情我,帮我一把。 我试图通过第一次出现Javascript 正则表达式:基于第一次出现的拆分字符串,带有occurance,javascript,regex,string,split,Javascript,Regex,String,Split,我的正则表达式很差。请同情我,帮我一把。 我试图通过第一次出现和(区分大小写)将字符串拆分为一个长度为2的数组。我不知道我们要开始了,有人能帮我吗 var strArr = "Thing And other thing".split(/magic regex/); expect(strArr).to.deep.equal(["Thing","And other thing"]); var strArr = "Thing and other thing".split(/magic rege
和(区分大小写)将字符串拆分为一个长度为2的数组。我不知道我们要开始了,有人能帮我吗
var strArr = "Thing And other thing".split(/magic regex/);
expect(strArr).to.deep.equal(["Thing","And other thing"]);
var strArr = "Thing and other thing".split(/magic regex/);
expect(strArr).to.deep.equal(["Thing and other thing", ""]);
var strArr = "One Thing And other thing And yet another thing".split(/magic regex/);
expect(strArr).to.deep.equal(["One Thing","And other thing And yet another thing"]);
var strArr = "yep, just one thing".split(/magic regex/);
expect(strArr).to.deep.equal(["yep, just one thing", ""]);
更新这正是我所需要的工作方式,但仍然很难看:
parser = function(str) {
var spl;
spl = str.split(/\s(?=And )/);
if (spl.length > 1) {
spl = [spl.shift(), spl.join(" ")];
} else {
spl = [str, ''];
}
return spl;
};
我建议做一个简单的测试,然后检查数组是否有一个或两个
strArr.split(“And”,2).长度
这不需要正则表达式。只需获取字符串中和“
的第一个索引:
var i = str.indexOf("And");
var strArr;
if (i == -1) {
strArr = [ str ];
} else {
strArr = [ str.substr(0, i), str.substr(i) ];
}
虽然Guffa的方法是有效的,但如果您最终需要用正则表达式的方式来实现这一点,那么以下方法将有效(通过积极的前瞻):
要测试:
alert(JSON.stringify(spl));
已更新以确保它在[space]和[space]
上拆分。是否尝试了string.split('And')
?要仅检查字符串中是否存在字符串,可以使用Indexofies。它没有完成所有的单元测试。@adeneo我可以编写一个函数和if语句,并使用indexof完成所有的测试。但我认为正则表达式会更优雅,这个问题似乎离题了,因为它要求工作代码的实现更干净。因此,这将是更合适的。我不认为这将导致理想的输出。关于limit
参数:“split方法仍然会在分隔符的每个匹配项上进行拆分,但它会将返回的数组最多截断为limit
元素。”虽然这也会找到BAnd
,但使用regex是否无法更优雅地执行此操作?@anubhava:如果愿意,您可以查找”和“
”,但问题并没有规定它应该只查找一个“And”,这是一个单独的单词。到目前为止,这对我来说是最好的。但这在每次出现时都会分开,而不仅仅是在第一次出现时。@FelixKling Right,修复了它。如果没有'和'
这将返回一个2的数组,其中包含[0]
被'
@Freshyeball也修复了这个问题;)thanksOk,又发现了一个问题<代码>“和”
被识别,它需要匹配“和”
alert(JSON.stringify(spl));