Regex для проверки только заглавных букв, двух специальных символов (& и С) и без пробела между - PullRequest
2 голосов
/ 20 октября 2010

Я использую приведенный ниже фрагмент кода для проверки моей входной строки: только заглавными буквами, цифрами и двумя специальными символами (это & ​​и Ñ) и без пробелов между ними.

var validpattern = new RegExp('[^A-Z0-9\d&Ñ]');
if (enteredID.match(validpattern))
   isvalidChars = true;
else
   isvalidChars = false;

Тест 1:"XAXX0101%&&$#" должен завершиться неудачей, т.е. isvalidChars = false; (поскольку он содержит недопустимые символы, такие как %$#.

Тест 2: "XAXX0101&Ñ3Ñ&" должен пройти.

Тест 3: "XA 87B" должен завершиться с ошибкой какон содержит пробел между

Приведенный выше код не работает. Может ли кто-нибудь помочь мне исправить приведенное выше регулярное выражение.

Ответы [ 4 ]

11 голосов
/ 20 октября 2010

Это происходит потому, что у вас есть отрицание (^) внутри класса символов.

То, что вы хотите: ^[A-Z0-9&Ñ]+$ или ^[A-Z\d&Ñ]+$

Изменения сделаны:

  • [0-9] совпадает с \d. Так что используйте любой из них, а не оба, хотя использование обоих не является неправильным, это избыточно.
  • Добавлен начальный якорь (^) и конец якорь ($) для соответствия всего строка не часть этого.
  • Добавлен квантификатор +, так как класс символов соответствует одиночному характер.
3 голосов
/ 20 октября 2010
^[A-Z\d&Ñ]+$

0-9 не требуется.

1 голос
/ 20 октября 2010

, если вы хотите действительные шаблоны, вы должны удалить ^ в диапазоне символов.

[A-Z0-9\d&Ñ]

0 голосов
/ 20 октября 2010

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

$('#txtId').alphanumeric({ allow: " &Ñ" });

Используя регулярное выражение (как указано в codaddict), мы можем достичь того же самого

var validpattern = new RegExp('^[A-Z0-9&Ñ]+$');

Спасибо всем за добавленный драгоценный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...