有没有办法禁用 all
符号,标点符号,块元素,几何形状和dingbats,如下所示:
✁✂✃✄✇✈✉✍✍✏✐✑✒✒✔⟻⟻⟼⟾⟿⟻⟼⟽⟾⟿▚▛▜▝▟▟▟▟
没有在正则表达式模式中写下所有这些,同时启用所有其他正常语言字符,如中文,阿拉伯语等。如下所示:
文化中国الجزيرةنت
我正在构建一个javascript验证函数,我真正的问题是我无法使用:
[a-zA-Z0-9]
因为这忽略了很多语言而不仅仅是符号。
答案 0 :(得分:5)
Unicode标准将所有可能的字符分成code charts。每个代码表包含相关字符。如果您只想排除(或包含)某些类别的字符,则必须制作一个合适的排除列表(或包含)。 Unicode很大,所以这可能需要做很多工作。
答案 1 :(得分:2)
不是。
JavaScript不支持Unicode Character Properties。你得到的最接近的是按照Greg Hewgill建议的Unicode代码点排除范围。
例如,要匹配数学符号下的所有字符:
/[\u2190-\u259F]/
答案 2 :(得分:2)
这取决于你的正则表达方言。不幸的是,可能大多数现有的JavaScript引擎都不支持Unicode字符类。
在(最近的)Perl或.Net中的正则表达式引擎中,可以引用Unicode字符类。
\ p {L}:任何语言的任何一种信件。 \ p {N}:来自任何语言的任何数字符号(包括,我记得,印度语,阿拉伯语和CJK号码字形)。
因为Unicode支持组合和分解的字形,所以可能会遇到某些复杂性:即,如果只存在分解形式,则可能会在匹配模式中意外排除某些变音符号,并且您可能需要明确允许这些字形。马克的类型。如果我没记错的话,你可以通过使用kC规范化(仅适用于具有组合形式的字符)规范化的字符串来缓解这种情况。在支持Unicode的环境中,通常有一个函数可以让你非常容易地规范化Unicode字符串(至少在Java和.Net中都是如此)。
已编辑添加:如果您已开始沿着这条路走下去,或已经考虑过它,为了恢复理智,您可能需要尝试使用Unicode Plugin for XRegExp(这将是要求你依赖XRegExp)。
答案 3 :(得分:1)
JavaScript正则表达式没有本机Unicode支持。在服务器站点验证(或清理)字符串或使用非本机正则表达式库的替代方法。虽然我从未使用它,XRegExp就是这样一个库,它有一个Unicode Plugin。
答案 4 :(得分:1)
看看Unicode Planes。您可能希望排除除了0和2平面之外的所有内容。之后,它会变得很难看,因为您必须根据具体情况排除大量平面0。