Javascript - 正则表达式删除特殊字符,但也保留希腊字符

时间:2014-04-27 18:31:00

标签: javascript regex replace character symbols

我正在尝试从一段文本中删除特殊字符,但使用以下正则表达式

var desired = stringToReplace.replace(/[^\w\s]/gi, '')

(在这里找到: javascript regexp remove all special characters

具有删除希腊字符的负面影响,这是我不想要的。

有人还能解释我如何在正则表达式中使用字符范围吗?是否有一个字符图可以帮助我定义我想要的范围?

答案:

[a-zA-Z0-9ΆΈ-ώ\s]   # See my 2nd comment under Joeytje50's answer.

3 个答案:

答案 0 :(得分:2)

尝试添加希腊字符范围,如下所示:

/[^\w\sΆΈ-ϗἀ-῾]/gi

我通过查看Unicode页面0370 Greek and Coptic1F00 - Greek Extended来创建此模式。我不会说希腊语,而且更受限制的字符集可能更合适,但这似乎有效:

"-ἄλφα-".replace(/[^\w\sΆΈ-ϗἀ-῾]/gi, ''); // "ἄλφα"

答案 1 :(得分:2)

定义这些范围的方式基于它们的字符代码。因此,由于A包含字符代码65,而z包含字符代码122,因此以下正则表达式为:

[A-z]

将匹配每个字母,但每个字符都包含在这些字符代码之间的字符代码,即代码为91到95的字符,即字符[\]^_。 (demo)。

现在,对于希腊字母,对于alpha到omega,大写字符的字符代码是913-937,对于alpha到omega,小写字符是945-969(这包括sigma的小写变体,即{{1 (962)和ς(963))。

因此,为了匹配除拉丁字母,希腊字母和阿拉伯数字之外的每个字符,您需要以下正则表达式:

σ

因此,对于希腊字符,它就像拉丁字母一样。


编辑:我通过谷歌翻译' d Lipsum进行了tested,看起来这并没有考虑重音字母。我已经检查了这些重音字母的字符代码是什么,结果发现它们放在小写字母之前,或者紧跟在大写字母之后。因此,以下正则表达式适用于所有希腊字母,包括重音字母:

[a-zA-Z0-9α-ωΑ-Ω]

Demo

此扩展范围现在还包括[a-zA-Z0-9ά-ωΑ-ώ] (字符代码940到944)和άέήίΰ(代码970到974)。

要包含空格(空格,制表符,换行符),只需在范围中加入ϊϋόύώ

\s

Demo


编辑:显然有更多希腊字母需要包含在此范围内,即[a-zA-Z0-9ά-ωΑ-ώ\s] 范围内的字母,即[Ά-Ϋ]之前的字母范围,因此新的正则表达式看起来像这样:

ά

Demo

答案 2 :(得分:0)

var stringToReplace = "παράδειγμαs & /(";
var result = stringToReplace.replace(/[^\u0370-\u03FF\w\s]/mg, "");

<强> 样本:

http://jsfiddle.net/tuga/LKjYd/

0370-03FF Greek and Coptic Character Block 

http://apps.timwhitlock.info/js/regex