Jquery 只允许字母数字 + 国际字符(但不允许符号)
Jquery allow only Alpha Numeric + International characters (but not symbols)
我需要验证一个不允许任何符号的表单,如 ❦ ❧ ლ 。
我发现这个解决方案有效,但它也不允许使用国际字符(例如德语字符 - ü)。
理想情况下,我还应该允许使用一些标点符号 - 例如“-”、“:”。
if( /[^a-zA-Z0-9\-\/]/.test($('.my_textarea').val()) ) {
isFormValid = false;
}
如果您使用 POSIX expressions,您将允许任何符号和标点符号:
/[^a-zA-Z0-9\-\/[:ascii:][:punct:]]/
所以,我认为最好的方法是在列表中插入允许的符号作为例外:
/[^a-zA-Z0-9\-\/,.ü]/
因为您似乎只有一小部分想要允许的字符,所以我会坚持将所有允许的字符列入白名单(而不是将不允许的字符列入黑名单)。
例如:
[^\w\-\/üäöÜÄÖ.,:;]
(\w
是 a-zA-Z0-9_
的缩写,如果您不想要 _
,则坚持使用 a-zA-Z0-9
)
如需更多字符,只需将它们添加到您的字符组即可。
您可以使用 \uXXXX
语法将 js regexen 中的国际字符指定为单独的 unicode 代码点或其范围(XXXX
表示十六进制代码点)。因此,添加您希望支持的字母代码点范围可能是一个可行的解决方案(当然,如果您希望支持所有脚本,则不会,尽管您可以根据 country/language 选择应用不同的正则表达式).
查阅 unicode code chart synopsis or the wikipedia page(各个脚本的页面在右上角的摘要框中包含代码点范围)以找到相应的代码。
示例(西里尔字母):
/[^a-zA-Z0-9\u0400-\u04ff\-\/]/
我需要验证一个不允许任何符号的表单,如 ❦ ❧ ლ 。
我发现这个解决方案有效,但它也不允许使用国际字符(例如德语字符 - ü)。
理想情况下,我还应该允许使用一些标点符号 - 例如“-”、“:”。
if( /[^a-zA-Z0-9\-\/]/.test($('.my_textarea').val()) ) {
isFormValid = false;
}
如果您使用 POSIX expressions,您将允许任何符号和标点符号:
/[^a-zA-Z0-9\-\/[:ascii:][:punct:]]/
所以,我认为最好的方法是在列表中插入允许的符号作为例外:
/[^a-zA-Z0-9\-\/,.ü]/
因为您似乎只有一小部分想要允许的字符,所以我会坚持将所有允许的字符列入白名单(而不是将不允许的字符列入黑名单)。
例如:
[^\w\-\/üäöÜÄÖ.,:;]
(\w
是 a-zA-Z0-9_
的缩写,如果您不想要 _
,则坚持使用 a-zA-Z0-9
)
如需更多字符,只需将它们添加到您的字符组即可。
您可以使用 \uXXXX
语法将 js regexen 中的国际字符指定为单独的 unicode 代码点或其范围(XXXX
表示十六进制代码点)。因此,添加您希望支持的字母代码点范围可能是一个可行的解决方案(当然,如果您希望支持所有脚本,则不会,尽管您可以根据 country/language 选择应用不同的正则表达式).
查阅 unicode code chart synopsis or the wikipedia page(各个脚本的页面在右上角的摘要框中包含代码点范围)以找到相应的代码。
示例(西里尔字母):
/[^a-zA-Z0-9\u0400-\u04ff\-\/]/