在我的情况下,字长是“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所示)。
答案 0 :(得分:1)
JavaScript在正则表达式中支持Unicode存在问题。为了使事情有效,我建议使用XRegExp库,它具有稳定的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"