首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript - regex -如何删除指定长度的单词

Javascript - regex -如何删除指定长度的单词
EN

Stack Overflow用户
提问于 2014-05-01 13:52:23
回答 4查看 565关注 0票数 0

在我的例子中,单词长度是"2“,我使用的是这个正则表达式:

代码语言:javascript
运行
复制
text = text.replace(/\b[a-zA-ZΆ-ώἀ-ῼ]{2}\b/g, '') );

但不能使它与希腊字符一起工作。为了您的方便,这里有一个演示:

代码语言:javascript
运行
复制
text = 'English: the on in to of \n Greek: πως θα το πω';
text = text.replace(/\b[0-9a-zA-ZΆ-ώἀ-ῼ]{2}\b/g, '');
console.log(text);

就希腊字符而言,我尝试使用2组范围:“希腊语和科普特语”和“希腊语扩展”(如在unicode-table.com上看到的)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-28 17:21:53

希腊字母的问题在于\b。您可以在这里查看一下:Javascript - regex - word边界(\b)问题,其中@Casimir et Hippolyte提出了以下解决方案:

由于Javascript没有查找功能,而且由于word边界只与\w字符类的成员一起工作,所以唯一的方法是使用组(如果想替换的话捕获组):

代码语言:javascript
运行
复制
//example to remove 2 letter words:
txt = txt.replace(/(^|[^a-zA-ZΆΈ-ώἀ-ῼ\n])([a-zA-ZΆΈ-ώἀ-ῼ]{2})(?![a-zA-ZΆΈ-ώἀ-ῼ])/gm, '\1');

我还在第一次和第三次匹配中添加了0-9,因为它删除了诸如"2TB“或"mp3”之类的单词。

票数 0
EN

Stack Overflow用户

发布于 2014-05-01 14:00:08

为什么使用regex,我认为不用regex就可以解决问题。

检查下面的示例,它应该给您一个如何启动的提示

代码语言:javascript
运行
复制
text = 'English: the on in to of \n Greek: πως θα το πω';
var tokens = text.split(/\s+/);
var text = tokens.filter(function(token){ return token.length > 2}).join(' ');
alert(text);
票数 2
EN

Stack Overflow用户

发布于 2014-05-01 13:57:12

JavaScript在正则表达式中对Unicode的支持方面存在问题。为了使这些工作正常进行,我建议使用XRegExp库,它对Unicode有稳定的支持。

更多: http://xregexp.com/plugins/#unicode

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

https://stackoverflow.com/questions/23409085

复制
相关文章

相似问题

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