我正在尝试从一段文本中删除特殊字符,但使用以下正则表达式
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.
答案 0 :(得分:2)
尝试添加希腊字符范围,如下所示:
/[^\w\sΆΈ-ϗἀ-῾]/gi
我通过查看Unicode页面0370 Greek and Coptic和1F00 - 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α-ωΑ-Ω]
此扩展范围现在还包括[a-zA-Z0-9ά-ωΑ-ώ]
(字符代码940到944)和άέήίΰ
(代码970到974)。
要包含空格(空格,制表符,换行符),只需在范围中加入ϊϋόύώ
:
\s
编辑:显然有更多希腊字母需要包含在此范围内,即[a-zA-Z0-9ά-ωΑ-ώ\s]
范围内的字母,即[Ά-Ϋ]
之前的字母范围,因此新的正则表达式看起来像这样:
ά
答案 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