首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单词边界对符号字符有效吗?

单词边界对符号字符有效吗?
EN

Stack Overflow用户
提问于 2012-06-12 00:20:48
回答 2查看 308关注 0票数 0

我正在尝试在聊天的表情符号功能中实现单词边界。但是由于某些原因,我似乎不能使用边界这个词。我是regex的新手。

所以当我这样做的时候:

代码语言:javascript
复制
var reg = /\b\Hi\b/gi;
var str = 'HiHiHi Hi HiHiHi Hi';
alert(str.replace(reg, ''));

这种情况会发生:Jsfiddle

它实际上工作得很好,并且确实删除了那些独立的2个Hi。

但当我将reg改为转义的笑脸符号,然后更改字符串时:

代码语言:javascript
复制
var reg = /\b\:\)\b/gi;
var str = 'HiHi:) :) HiHiHi :)';
alert(str.replace(reg, ''));

这种情况会发生:Jsfiddle

它就是不起作用。字符串保持不变。是不是单词边界不能用在符号上?如果是这样,Facebook是如何在他们的聊天中做到这一点的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-12 00:36:47

由于\b在这种情况下不起作用,您可以使用:

代码语言:javascript
复制
var re = /(\s|^):\)(?!\S)/g;
var str = 'HiHi:) :) HiHiHi :)';
alert(str.replace(re, '$1'));

它的工作原理就像空间边界。

你可以像这样添加几个笑脸符号:

代码语言:javascript
复制
/(\s|^)(?::\)|:\(|:\||:\]|:\[)(?!\S)/g;
票数 0
EN

Stack Overflow用户

发布于 2012-06-12 00:25:06

单词边界\b表示单词字符\w (在javascript中,[A-Za-z_])和非单词字符\W (其他所有内容)之间的零宽度边界。

正因为如此,在两个表情图标之间或当表情图标被空格、标点符号等包围时,将不会有边界。

最简单的正则表达式是/[:;]-?[()]/gi,它支持smileys )和frownies (,带有可选的破折号和眼睛:或眨眼;

编辑:

这将需要一个空格或字符串的开头(作为捕获组,因为Javascript不支持look-behinds),然后它使用上面的regex,然后它必须跟在字符串或空格的结尾。

代码语言:javascript
复制
var reg = /(\s|^)[:;]-?[()](?:\s|$)/gi;
var str = 'HiHi:) :) HiHiHi :)';
alert(str.replace(reg, '$1'));

在以下情况下应替换::-)cool :( not!

在以下情况下不应替换:Digits:(0,1,2,3)hi :(.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10983932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档