3 回答
TA贡献1942条经验 获得超3个赞
或者,您可以使用字符串。分裂()
const myString = '3rd Floor Empire State Building';
const certainString = ' Floor ';
let before = myString.split(certainString)[0];
let after = myString.split(certainString)[1];
console.log(before);
console.log(after);
如果区分大小写是一个问题,我们可以在比较之前将它们转换为小写(或大写)。检查下面的代码段:
const myString = '3rd Floor Empire State Building';
const certainWord = ' Floor ';
//----------------------------------------------
const lowerMyString = myString.toLowerCase();
const lowerCertainWord = certainWord.toLowerCase();
const beforeEndIndex = lowerMyString.indexOf(lowerCertainWord);
const afterStartIndex = beforeEndIndex + lowerCertainWord.length;
const before = myString.slice(0, beforeEndIndex);
const after = myString.slice(afterStartIndex, myString.length);
//----------------------------------------------
console.log(before);
console.log(after);
TA贡献1853条经验 获得超18个赞
使用正则表达式:
https://regex101.com/r/a3WlFM/2
const re = /([\s\S]*?)(?:\s+)floor(?:\s+)([\w+ \.\,\?\!]*)/gim
const str = `3rd Floor Empire State Building
13th Floor Burj Khalifa
2nd floor Chrysler Building
4th flOor Big Ben
3rd Floor floortech building`
match = re.exec(str);
while (match != null) {
// matched text: match[0]
// match start: match.index
// capturing group n: match[n]
console.log(match[1],"-",match[2])
match = re.exec(str);
}
或者没有正则表达式
const myString = '3rd Floor Empire State Building'
const startPos = myString.toLowerCase().indexOf(" floor ")
console.log("Floor:",myString.slice(0,startPos),"Address:",myString.slice(startPos+7))
TA贡献1829条经验 获得超7个赞
在第一个示例中,您没有在前瞻中包括地板之前的空间。
您更新的模式将是.+?(?= floor)See a regex demo
如果要匹配这两个部分,可以使用 2 个捕获组并从匹配非空白字符开始,\S以防止出现空字符串。
用于/i不区分大小写的匹配,如果/g需要,则用于获取所有匹配项。
/(\S.*?) floor (\S.*)/gi
模式将匹配
(\S.*?)捕获组 1,匹配非空白字符任何非贪婪字符floor被空间包围的比赛地板(\S.*)捕获组 2,匹配空白字符和行的其余部分
const regex = /(\S.*?) floor (\S.*)/gi;
const str = `13th Floor Burj Khalifa
2nd floor Chrysler Building
4th flOor Big Ben
3rd Floor Empire State Building
floor `;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
console.log(m[2]);
console.log("\n");
}
添加回答
举报
