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

时间:2018-10-09 18:33:39

标签: javascript regex

输入文字:

import React from 'react';

import iconFB from 'images/socials/facebook_logo.svg';
import iconIG from 'images/socials/insta_logo.svg';
import iconTW from 'images/socials/twitter_logo.svg';
import iconYT from 'images/socials/youtube_logo.svg';

const Social = () => {

    const icons = [
        { link: 'http://www.facebook.com', image: `${iconFB}`},
        { link: 'http://www.instagram.com', image: `${iconIG}`},
        { link: 'http://www.twitter.com', image: `${iconTW}`},
        { link: 'http://www.youtube.com', image: `${iconYT}`}
    ]

    return(
        <ul className="social">
            {
                icons.map((a, b, c) => {
                    return <li key={a}><a href={a} target="_blank"><img src={c}/></a></li>
                })
            }
        </ul>
    )
}

export default Social;

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

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

谢谢。

3 个答案:

答案 0 :(得分:0)

您可以使用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
);

答案 1 :(得分:0)

您可以使用拆分功能。

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

答案 2 :(得分:0)

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

.+(?= \d+)

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

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

(?<=\d+ ).+

它匹配任何一个或多个字符,该字符前面有数字和空格。