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