Javascript - 正则表达式 - 如何删除指定长度的单词

时间:2014-05-01 13:52:24

标签: javascript regex words

在我的情况下,字长是“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所示)。

4 个答案:

答案 0 :(得分:1)

JavaScript在正则表达式中支持Unicode存在问题。为了使事情有效,我建议使用XRegExp库,它具有稳定的Unicode支持。

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

答案 1 :(得分:1)

为什么使用正则表达式,我认为您可以在不使用正则表达式的情况下解决问题

检查下面的例子,它应该给你一个如何开始的提示

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 :(得分:1)

试试这个

text = 'English: the on in to of \n Greek: πως θα το πω';
text = text.replace(/\b[0-9a-zA-ZΆ-ώἀ-ῼ]{2}\b/g, '');
alert(text);
text2 = text.split(' ');
text = text2.filter(function(text2){ return text2.length != 2}).join(' ');
alert(text);

编辑-------------------

试试这个,

text = 'English: the on in to of \n Greek: πως θα το πω';
text.replace(/\b[\n]\b/g, '\n ').replace(/\b[\t]\b/g, '\t ');
text2 = text.split(' ');
text = text2.filter(function(text2){ return text2.length != 2}).join(' ');
alert(text);

你将保留\ t,\ n并删除2个字母的单词是在两个标签或两个换行符之间

答案 3 :(得分:0)

希腊字符的问题是因为\b。您可以在这里查看:Javascript - regex - word boundary (\b) issue其中@Casimir et Hippolyte提出以下解决方案:

  

由于Javascript没有lookbehind功能,并且由于单词边界仅适用于\ w字符类的成员,因此唯一的方法是使用组(如果要进行替换,则使用捕获组): / p>

//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"