繁体   English   中英

匹配javascript中字符串中的数字之前和之后的所有文本

[英]Match all text before a number in string and after a number in string in javascript

输入文本:

Mazzei, Toscana, sangiovese, merlot 2400
Papale, Puglia, primitive 2600
Antinori, Toscana, sangiovese, cabernet, sauvignon, merlot, syrah 2950

所需的输出(末尾没有空格):

Mazzei, Toscana, sangiovese, merlot
Papale, Puglia, primitive
Antinori, Toscana, sangiovese, cabernet, sauvignon, merlot, syrah   

我也想不通:

输入文本:

Mazzei 2400 Toscana, sangiovese, merlot
Papale 2600 Puglia, primitive
Antinori Toscana, sangiovese 2950 cabernet, sauvignon, merlot, syrah

所需的输出(末尾没有空格):

Toscana, sangiovese, merlot
Puglia, primitive
cabernet, sauvignon, merlot, syrah

谢谢。

您可以使用replace和regexp从字符串中删除数字,也许您希望清理文本,例如删除多余的空格等。

 console.log( "Antinori Toscana, sangiovese 2950 cabernet, sauvignon, merlot, syrah" .replace(/\\d*/g, "") // remove numbers .replace(/\\s+/g, " ") // convert double space to single one .trim() // remove space around the string ); 

您可以使用拆分功能。

 const input = `Mazzei 2400 Toscana, sangiovese, merlot Papale 2600 Puglia, primitive Antinori Toscana, sangiovese 2950 cabernet, sauvignon, merlot, syrah`; input.split(/\\n/).forEach((line) => { const result = line.split(/[0-9]+/); console.log('Result:', result[1]); }); 

我认为,您需要两个正则表达式来解决此问题:此正则表达式可以解决您的第一个问题:

.+(?= \d+)

它匹配任何一个或多个字符,后跟一个空格和一个或多个数字。

您的第二个问题可以通过此正则表达式解决:

(?<=\d+ ).+

它与一个或多个任何具有数字和空格的字符相匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM