正则表达式允许所有字母字符和Unicode字符

4
我需要一个正则表达式来允许字符串中 所有字母, 包括希腊/德国字母, 但将这些符号 ?,&,^," 替换为 *
我跳过了字符列表,以简化问题。我真的想看看如何构建它,然后使用 ASCII 码包含字母集合。

考虑到在 Unicode 编码的文本中,每个字符都是一个 Unicode 字符,因此您的正则表达式将简单地为 [?&^"],但这可能不是您想要的。 (顺便说一下,希腊字符集位于包括 0x3700x03ff 在内的范围内) - Regexident
1
有些符号就像“计算机很蠢,你必须明确告诉它们你想要什么。” - pimvdb
“some symbols” 是一个固定列表吗? - Alex K.
3个回答

4

如果你有一组有限且短的要替换的元素,你可以使用一个类,例如:

 string.replace(/[?\^&]/g, '*');

您可以添加任意数量的符号来拒绝替换。您还可以添加Unicode符号的范围,以便替换(例如\u017F-\036F\u0400-\uFFFF

否则,使用类来指定不需要替换的符号,如a-z、重音/变音字母和希腊符号

 string.replace(/[^a-z\00C0-\017E\u0370-\03FF]/gi, '*');

4
你需要使用XRegexp插件,以及Unicode附加组件。一旦安装完成,你就可以使用现代正则表达式,例如/[\p{L}\p{Nl}]/,它必然包括那些是字母或数字字母的\p{Greek}码点。但如果你想的话,也可以匹配/[\p{Latin}\p{Greek}]/
JavaScript自带的正则表达式很糟糕,建议使用XRegexp

1

所以类似这样:/^[^?&\^"]*$/(这意味着该字符串仅由您列出的五个字符之外的字符组成)...

但是如果您想要希腊字母和Unicode字符(什么是Unicode字符?àèéìòù?日语?),也许您需要使用http://xregexp.com/。它是JavaScript的正则表达式库,包括各种Unicode字符类的字符类(我知道我在重复自己),以及其他用于Unicode处理的“命令”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接