This question already has answers here:
Regex whitespace word boundary
(3个答案)
在4个月前关闭。
即时通讯试图使正则表达式匹配一组单词。
例如,如果我匹配一组单词-
然后在字符串
'美国茶很棒。您喜欢美国茶吗?爱哇美国茶#美国茶'
因此,我正在尝试只对单词集进行完全匹配。
我尝试了一些方法,但是还没有正确的正则表达式:(
如果有人可以帮助或可以指出我的方向,那将真的很有帮助。
检查一下
结果是
我不希望第二场比赛中有空格,我希望比赛结果为
(第二个美国茶会前没有空间)
https://regex101.com/r/qB0uO2/1
如果要考虑前缀和后缀:
https://regex101.com/r/qB0uO2/2
JSBIN EXAMPLE
编辑:
上面的代码仅返回匹配项,如果您想保留捕获和匹配的前缀和后缀,请使用捕获组以及:
(3个答案)
在4个月前关闭。
即时通讯试图使正则表达式匹配一组单词。
例如,如果我匹配一组单词-
American Tea
然后在字符串
American Tea is awesome. Do you like American Tea? love WowAmerican Tea #American Tea
中,这里只有2个匹配项,'美国茶很棒。您喜欢美国茶吗?爱哇美国茶#美国茶'
因此,我正在尝试只对单词集进行完全匹配。
我尝试了一些方法,但是还没有正确的正则表达式:(
如果有人可以帮助或可以指出我的方向,那将真的很有帮助。
检查一下
'American Tea lalalal qwqwqw American Tea sdsdsd #American Tea'.match(/(?:^|\s)(American Tea)(?=\s|$)/g)
结果是
["American Tea", " American Tea"]
我不希望第二场比赛中有空格,我希望比赛结果为
["American Tea", "American Tea"]
(第二个美国茶会前没有空间)
最佳答案
使用.replace()获得乐趣和 yield
/(?:^|\s)(american tea)/ig
https://regex101.com/r/qB0uO2/1
如果要考虑前缀和后缀:
/(?:^|\s)(american tea)(?:\W|$)/ig
https://regex101.com/r/qB0uO2/2
JSBIN EXAMPLE
var str = "American Tea is awesome. Do you like American Tea? love WowAmerican Tea #American Tea";
str.replace(/(?:^|\s)(american tea)(?:\W|$)/ig, function(i, m){
console.log(m);
});
//"American Tea"
//"American Tea"
编辑:
上面的代码仅返回匹配项,如果您想保留捕获和匹配的前缀和后缀,请使用捕获组以及:
var str = "American Tea is awesome. Do you like American Tea? love WowAmerican Tea #American Tea";
var newStr = str.replace(/(^|\s)(american tea)(\W|$)/ig, function(im, p1, p2, p3){
return p1 +"<b>"+ p2 +"</b>"+ p3; // p1 and p3 will help preserve the pref/suffix
});
document.getElementById("result").innerHTML = newStr;
<div id="result"></div>
p
艺术在哪里p1
是第一个匹配组(任何前缀)p2
是第二个匹配组(“美国茶”一词)p3
是第三个匹配组(任何后缀)10-08 05:43