Javascript регулярное выражение для проверки точных alphanumeri c и специальных символов - PullRequest
1 голос
/ 24 февраля 2020

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

  1. (da sh)
  2. (подчеркивание)
  3. (точка)
  4. (
  5. Пробел
  6. )
  7. &
  8. $
  9. #
  10. Нумер c
  11. Альбахет

Для этого у меня есть регулярное выражение, с которым я придумал, с помощью некоторых статей в Интернете

Мой регулярное выражение

/^\w\s-.()&$#/  

    -- Here, \w matches letter , digits and underscores
    --       \s matches spaces table and line breaks. 
    --       -  matches the hypen in the character set example [a-z]   

Пример - str передается как

  1. Name123 & ---- true
  2. Name 123 $ ---- true
  3. Name @@@ ---- False, поскольку @ недопустимо
  4. Name -._ & ---- Верно
  5. Name@._& $ --- Неверно, поскольку @ недопустимо
  6. Имя. [] --- Ложно, поскольку [] недопустимо
function checkfirmName(str) {
    var pattern = new RegExp(/^\w\s-.()&$#/); //acceptable char

    if (pattern.test(str)) {
        return true; //good user input
    }

    alert("Please only use \nUnderScore,Dot,(,Space,),&,$,# \nThese are only allowed\n");

    return false;  // bad user input 
}

Я также не уверен, работает ли тестовое расширение (оно возвращает true-false), но не уверен, что оно выполняет итерацию и проверяет каждый символ, поэтому я нашел другой фрагмент кода, используя indexof:

function isValid(str) {
    var iChars = "/^\w\s-.()&$#/";

    for (var i = 0; i < str.length; i++) {
        if (iChars.indexOf(str.charAt(i)) != -1) {
            $.alert("File name has should have special characters \nUnderScore,Dot,(,Space,),&,$,# \nThese are only allowed\n");
            return false;
        }
    }

    return true;
}

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Я считаю regex101.com очень полезным при объяснении и тестировании регулярных выражений для Python и Javascript. В соответствии с вашим требованием, я считаю, что будет полезно следующее: ^[-\.\(\) \&$\#\w]+$

\ w: потому что он заботится обо всех числах, алфавитах и ​​подчеркивании.

В отношении JS, код может быть как

function isValid(str) {
    var patt = /^[-\.\(\) \&$\#\w]+$/;
    return patt.test(str);
}
1 голос
/ 24 февраля 2020

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

/^[-\w .()&$#]+$/

Демонстрация RegEx

  • Вам нужно использовать якоря в вашем регулярном выражении.

  • Дефис без экранирования должен находиться в первой или последней позиции в классе символов.


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

function checkfirmName(str) {
    const pattern = /[^-\w .()&$#]/; //not-acceptable char

    if (pattern.test(str)) {
        alert("Please only use \nUnderScore,Dot,(,Space,),&,$,# \nThese are only allowed\n");
        return false; // bad user input
    }

    return true;  // good user input 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...