Javascript 获取用“quot;”分隔的单词&引用;用正则表达式

Javascript 获取用“quot;”分隔的单词&引用;用正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我有以下代码片段: HTML <div class="colors"> <h1>Colors:</h1> <div class="recipe"></div> </div> <div class="numbers"> <h1>Numbers:</h1> <div clas

我有以下代码片段:

HTML

<div class="colors">
    <h1>Colors:</h1>
    
    <div class="recipe"></div>
</div>

<div class="numbers">
    <h1>Numbers:</h1>
    
    <div class="recipe"></div>
</div>

<div class="people">
    <h1>People:</h1>
    
    <div class="recipe"></div>
</div>

颜色:
编号:
人:
JavaScript

var colors = 'yellow / black / purple',
    numbers = '5 / 15 / 25',
    people = 'Brad Pitt / Leonardo DiCaprio / Anne Hathaway';

$('.colors .recipe').html(colors.replace(/(\w+)\/*/g, '<em>$1</em><br>'));

$('.numbers .recipe').html(numbers.replace(/(\w+)\/*/g, '<em>$1</em><br>'));

$('.people .recipe').html(people.replace(/(\w+)\/*/g, '<em>$1</em><br>'));
var colors='黄色/黑色/紫色',
数字='5/15/25',
人物='布拉德·皮特/莱昂纳多·迪卡普里奥/安妮·海瑟薇';
$('.colors.recipe').html(colors.replace(/(\w+)\/*/g,$1
); $('.numbers.recipe').html(numbers.replace(/(\w+)\/*/g,$1
); $('.people.recipe').html(people.replace(/(\w+)\/*/g,$1
);

我不擅长正则表达式,然后在各自的配方上呈现分离的值时,我得到了意想不到的结果(您可以在上面发布的JSFIDLE上看到更多)

我的意思是,以下结果对我来说是:

[……]

布拉德

皮特

/莱昂纳多

迪卡普里奥

[……]

我想要和需要的是:

布拉德皮特

莱昂纳多·迪卡普里奥


没有斜杠,没有分开的名字/姓氏。

你不需要正则表达式。拆分方法可以完成以下任务:

var colors = 'yellow / black / purple',
    numbers = '5 / 15 / 25',
    people = 'Brad Pitt / Leonardo DiCaprio / Anne Hathaway';

function wrapEm(e) {
    return "<em>" + e + "</em>";
}

people.split(" / ").join("<br/>");

$('.colors .recipe').html(colors.split(" / ").map(wrapEm).join("<br/>"));
$('.numbers .recipe').html(numbers.split(" / ").map(wrapEm).join("<br/>"));
$('.people .recipe').html(people.split(" / ").map(wrapEm).join("<br/>"));
var colors='黄色/黑色/紫色',
数字='5/15/25',
人物='布拉德·皮特/莱昂纳多·迪卡普里奥/安妮·海瑟薇';
函数wrapEm(e){
返回“+e+”;
}
people.split(“/”).join(
); $('.colors.recipe').html(colors.split(“/”).map(wrapEm.join(
)); $('.numbers.recipe').html(numbers.split(“/”).map(wrapEm.join(
)); $('.people.recipe').html(people.split(“/”).map(wrapEm.join(“
”));

Split顾名思义,使用
/
作为分隔符,将字符串拆分为一个数组。

不需要正则表达式。拆分方法可以完成以下任务:

var colors = 'yellow / black / purple',
    numbers = '5 / 15 / 25',
    people = 'Brad Pitt / Leonardo DiCaprio / Anne Hathaway';

function wrapEm(e) {
    return "<em>" + e + "</em>";
}

people.split(" / ").join("<br/>");

$('.colors .recipe').html(colors.split(" / ").map(wrapEm).join("<br/>"));
$('.numbers .recipe').html(numbers.split(" / ").map(wrapEm).join("<br/>"));
$('.people .recipe').html(people.split(" / ").map(wrapEm).join("<br/>"));
var colors='黄色/黑色/紫色',
数字='5/15/25',
人物='布拉德·皮特/莱昂纳多·迪卡普里奥/安妮·海瑟薇';
函数wrapEm(e){
返回“+e+”;
}
people.split(“/”).join(
); $('.colors.recipe').html(colors.split(“/”).map(wrapEm.join(
)); $('.numbers.recipe').html(numbers.split(“/”).map(wrapEm.join(
)); $('.people.recipe').html(people.split(“/”).map(wrapEm.join(“
”));

Split顾名思义,使用
/
作为分隔符,将字符串拆分为一个数组。

将正则表达式替换为:

/([^\/]+)\/*/g

您希望
[^\/]+
表示除斜杠以外的任何含义,而不是对单词(不包括空格)使用
(\w+)

用以下内容替换正则表达式:

/([^\/]+)\/*/g

不要对单词(不包括空格)使用
(\w+)
,而是希望
[^\/]+
表示除斜杠以外的任何含义。

此正则表达式非常适合:

 $('.colors .recipe').html(colors.replace(/(\\)?\//g, '<em>$1</em><br>'));
$('.colors.recipe').html(colors.replace(/(\\)?\//g,$1
);
此正则表达式工作完美:

 $('.colors .recipe').html(colors.replace(/(\\)?\//g, '<em>$1</em><br>'));
$('.colors.recipe').html(colors.replace(/(\\)?\//g,$1
);
如果您需要更多的宽大处理,您仍然可以将regex与
.split()一起使用。例如:
.split(/\s*\/\s*/)
。是的,绝对不要看工程。回答时我完全忘记了。
em
标记去哪里了?使用
map()
获取
em
标记:
colors.split(“/”).map(函数(e){return”“+e+”;})。join(
Fiddle:@GuilhermeOderdenge:
map()
接受一个带有一个参数的回调函数,并为数组中的每个元素调用该函数,因此
e
这里是调用该函数的元素。请参阅,如果您需要更多的宽大处理,您仍然可以将regex与
.split()一起使用。例如:
.split(/\s*\/\s*/)
。是的,绝对不要看工程。回答时我完全忘记了。
em
标记去哪里了?使用
map()
获取
em
标记:
colors.split(“/”).map(函数(e){return”“+e+”;})。join(
Fiddle:@GuilhermeOderdenge:
map()
接受一个带有一个参数的回调函数,并为数组中的每个元素调用该函数,因此
e
这里是调用该函数的元素。看见