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

В моем приложении Angularjs мне нужно иметь регулярное выражение для двух шаблонов для проверки формы со следующим условием.

Образец 1:

Поле ввода должно принимать буквенно-цифровые символы без пробелов, и оно также должно позволять пользователю использовать такие символы, как ~!@#$-_ в любом месте строки, кроме этих символов, не должны быть разрешены другие символы, такие как (%, &, ^ etc), Он также не должен допускать пробелы в начале / конце.

Примеры:

 ab@4_w    :  valid
 sd!tye123  : valid
 sd%tye123  :  Invalid
 sd*tye123  :  Invalid

$ scope.pattern1 = [\ w ~! @ # \ $ -] +

Шаблон 2: Должен быть разрешен только алфавитно-цифровой без пробела и других символов, включая (_). Он также не должен допускать пробелы в начале / конце.

Примеры:

  a4hgg5  : Valid
  a4_6hy   : Invalid
  a@yb    : invalid

$ scope.pattern2 = [\ w] +

$scope.pattern1 а также $scope.pattern2 необходимо изменить, чтобы соответствовать моим требованиям.

2 ответа

Решение

Это не должно позволять пробелы в начале / конце.

В обоих случаях добавьте ng-trim="false" приписать input элемент.

Поле ввода должно принимать буквенно-цифровые символы без пробелов, и оно также должно позволять пользователю использовать такие символы, как ~!@#$-_ любое место в строке, кроме этих символов, не допускается использование других символов, как (%, &, ^ так далее).

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

^[\w~!@#$-]+$

куда \w Матчи [a-zA-Z0-9_],

ПРИМЕЧАНИЕ: если вы передаете шаблон в виде строки, не добавляйте ^ а также $ якоря, но двойные обратные слеши: "[\\w~!@#$-]+",

Должны быть разрешены только буквенно-цифровые символы без пробелов и других символов, включая (_).

Это намного проще: ^[a-zA-Z]+$, Тот же комментарий об якорях, как указано выше.

Пытаться

^[\w~!@#\$-]+$

объяснение

  1. ^ Начало строки
  2. [\w~!@#\$-]+ Любое количество персонажей, которые вы хотите, (обратите внимание на необходимость побега $ лайк \$)
  3. $Конец строки

Смотрите в действии на Regex101. Если вы хотите, чтобы пустые строки были действительными, укажите * вместо + для квантификатора. Также при использовании \w вам не нужно устанавливать i флаг, так как он уже охватывает как прописные, так и строчные буквы.

Другие вопросы по тегам