0

我有一个这样的Javascript函数:

function validateSessionName() {
  var session_name = document.getElementById('session_name').value;
  var submitButton = document.getElementById('submit');
  document.getElementById('session_error').innerHTML='';
  submitButton.removeAttribute('disabled');
  var filter = /^[A-Za-z0-9]+$/;
  if (filter.test(session_name)){
    return true;
  } else {
    document.getElementById('session_error').innerHTML="Invalid Session Name!";
    submitButton.setAttribute('disabled', 'disabled');
  }
}

这验证了只有数字和字母数字字符输入到表单中。但是,在某些情况下,会话名称可能包含 !@$#$#(%*。所有这些字符都在键盘上可用。我不希望我的应用程序接受这些奇怪的字符:工具,它使我的应用程序崩溃了。我该怎么办?谢谢。

4

2 回答 2

1

这取决于您所说的“英文键盘”和“奇怪的字符”是什么意思。

您可能正在考虑将输入限制为 ASCII 字符,但即便如此,您也可以获得诸如 null 之类的“奇怪”字符和大量控制字符。也许将字符限制在 ASCII 范围 [32, 126] 是您所追求的?(这些都是可以在美式键盘上输入的可打印字符。)

/^[\x20-\x7E]+$/

与该正则表达式匹配的字符是(注意前导空格):

  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~
于 2013-06-11T05:23:10.713 回答
0

https://blogs.oracle.com/shankar/entry/how_to_handle_utf_8

如何从 JavaScript 字符串中删除无效的 UTF-8 字符?

或者只是谷歌这样的东西

于 2013-06-11T05:22:33.270 回答