Проверка входных данных Javascript

#javascript #html

#javascript #HTML

Вопрос:

Как мне убедиться, что в имени нет специальных символов, кроме apostrophe…Eg :- Я могу разрешить О’Коннору, но не Джону «Доу»? Пожалуйста, помогите.

Комментарии:

1. У людей действительно есть символы с ударением и дефисы в их именах (например). Это область, в которой вы должны быть действительно либеральны в том, что вы принимаете.

Ответ №1:

Используйте регулярное выражение, если вы хотите использовать только английские символы с апострофом ^[A-Za-z']*$ вы можете расширить это, чтобы проверять множество вещей. Регулярные выражения — очень мощный инструмент, и я бы посоветовал ознакомиться с ними (они существуют практически на каждом языке программирования)

 var validRegex = /^[A-Za-z']*$/; 
if(myString.search(validRegex)==-1) 
     alert("Error");
  

Редактировать: добавлен пример.

Комментарии:

1. Не хочу придираться, но это дефис, а не апостроф.

2. Упс, я виноват. Исправлено.

Ответ №2:

Вот рабочий пример того, как вы могли бы использовать регулярное выражение для проверки допустимого имени с учетом изложенных вами условий:

 <!DOCTYPE html>
<html>
<head>
    <title>Check for a good name</title>
    <script>
    var goodName = /^[A-Za-z's] $/;

    function checkName(name){
        if (goodName.test(name)) {
            alert("Name is great!");
        } else {
            alert("Name contains illegal characters");
        }
    }      
    </script>
</head>
<body>
    <form onsubmit="return false;">
        <input type="text" name="name" size="20">
        <input type="button" value="Check" 
                             onclick="checkName(this.form.name.value);">
    </form>
</body>
</html>
  

/^[A-Za-z's] $/ Регулярное выражение допускает использование английских символов верхнего и нижнего регистра, апостроф и пробелов. (Это похоже на предложенное Afiefh, с добавлением s для разрешения пробелов и вместо *, чтобы предотвратить прохождение теста пустыми именами.)

Как предлагает Дэвид Дорвард выше, если вы действительно используете это для проверки имен, вы могли бы рассмотреть возможность ослабления правила для учета международных имен, изменив строку 6 на это:

 var goodName = /^([ u00c0-u01ffa-zA-Z'-]) $/;
  

Это позволяет использовать символы Юникода, апострофы и дефисы.

Комментарии:

1. Я только что попробовал ваш код, но он принимает все… кавычки и другие специальные символы…

2. Действительно? У меня все работает нормально. Вот рабочая версия: jsbin.com/ereyi3 и вот оно, международное регулярное выражение: jsbin.com/uvowe4