在我的例子中,单词长度是"2“,我使用的是这个正则表达式:
text = text.replace(/\b[a-zA-ZΆ-ώἀ-ῼ]{2}\b/g, '') );
但不能使它与希腊字符一起工作。为了您的方便,这里有一个演示:
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上看到的)。
发布于 2014-05-28 17:21:53
希腊字母的问题在于\b
。您可以在这里查看一下:Javascript - regex - word边界(\b)问题,其中@Casimir et Hippolyte提出了以下解决方案:
由于Javascript没有查找功能,而且由于word边界只与\w字符类的成员一起工作,所以唯一的方法是使用组(如果想替换的话捕获组):
//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”之类的单词。
发布于 2014-05-01 14:00:08
为什么使用regex,我认为不用regex就可以解决问题。
检查下面的示例,它应该给您一个如何启动的提示
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);
发布于 2014-05-01 13:57:12
JavaScript在正则表达式中对Unicode的支持方面存在问题。为了使这些工作正常进行,我建议使用XRegExp库,它对Unicode有稳定的支持。
更多: http://xregexp.com/plugins/#unicode
https://stackoverflow.com/questions/23409085
复制相似问题