Javascript - 用于删除特殊字符但还保留希腊字符的正则表达式

标签 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.

最佳答案

这些范围的定义方式是基于它们的字符代码。所以,因为 A有字符代码 65 , 和 z有字符代码 122 ,以下正则表达式:

[A-z]

会匹配每个字母,但也会匹配字符代码介于这些字符代码之间的每个字符,即代码为 91 到 95 的字符,即字符 [\]^_。 . (demo)。

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

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

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

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


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

[a-zA-Z0-9ά-ωΑ-ώ]

Demo

这个扩展范围现在还包括 άέήίΰ (字符代码 940 到 944)和 ϊϋόύώ (代码 970 到 974)。

要同时包含空格(空格、制表符、换行符),只需包含 \s在范围内:

[a-zA-Z0-9ά-ωΑ-ώ\s]

Demo .


编辑:显然有更多的希腊字母需要包含在这个范围内,即 [Ά-Ϋ] 范围内的那些, 这是 ά 之前的字母范围,所以新的正则表达式看起来像这样:

[a-zA-Z0-9Ά-ωΑ-ώ\s]

Demo .

关于Javascript - 用于删除特殊字符但还保留希腊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327302/

相关文章:

javascript - 动态添加的复选框未模型绑定(bind)到 IList

php - 如何创建一个下拉菜单,将数组中的数据放入文本字​​段中

javascript - 带变量的 Img src url

javascript - 收到 package.json 的解析错误。验证为有效 json

java - 正则表达式 . Java 中的运算符

PHP 将命令 "mailq"的输出获取到数组

regex - Perl正则表达式匹配特殊字符

c# - 在 C# 中替换字符串

r - 根据R中的另一个矩阵/df替换df/matrix中的值

java - 如何用有效的内容替换 Java 中的 "this"