Как разрешать только альфа-числовые символы с JavaScript
Играя с JavaScript, и то, что я пытаюсь сделать, это разрешить определенные символы в поле pass word - a-z, A-Z и 0-9.
<form action="http://www.cknuckles.com/cgi/echo.cgi" method="get" name="logOn">
User Name:<br />
<input type="text" name="userName" size="25" /><br />
Password:<br />
<input type="password" name="pw" size="25" /><br />
<input type="submit" value="Log In" onClick="validate()"/>
</form>
Выше мой HTML, и ниже мой JavaScript, который я пытался использовать для его проверки, но он не работает - никаких подсказок.
<script language="javascript">
document.logOn.onsubmit=validate;
function validate(){
var name=document.logOn.pw.value;
if(!name = "[a-zA-Z0-9]"){
alert("Your Password Cant Have Any Funky Things In It - Play It Straight!");
return false;
}
return true;
}
</script>
Но это не работает. Я все еще могу помещать символы как "*" и "[" и "{" и т.д.
Любые мысли?
Ответы
Ответ 1
Вам нужно сделать тест состояния регулярным выражением, а не строкой:
if(!/^[a-zA-Z0-9]+$/.test(name)){ ...
значение:
-
^
- начало строки
-
[a-zA-Z0-9]+
- один или несколько символов/чисел
-
$
- конец строки
или вы можете найти обратный код, который является "любым неприемлемым символом":
if(/[^a-zA-Z0-9]/.test(name)){
Ответ 2
if (name.match(/[\W_]/)) { //...
Значение, если строка "name" имеет любой символ, который не является буквенно-цифровым или подчеркиванием, тогда выполните блок. Обратите внимание, что мы должны отдельно проверить для подчеркивания (_
), потому что алфавитно-цифровой класс символов (\w
) включает в себя знак подчеркивания (поэтому отрицательный класс (\w
)).