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~!@#\$-]+$
объяснение
^
Начало строки[\w~!@#\$-]+
Любое количество персонажей, которые вы хотите, (обратите внимание на необходимость побега$
лайк\$
)$
Конец строки
Смотрите в действии на Regex101. Если вы хотите, чтобы пустые строки были действительными, укажите *
вместо +
для квантификатора. Также при использовании \w
вам не нужно устанавливать i
флаг, так как он уже охватывает как прописные, так и строчные буквы.