/ / ng-pattern, за да позволим алфа и някои специални знаци - javascript, angularjs, regex

ng-pattern, за да позволим на alpha и някои специални символи - javascript, angularjs, regex

Във формуляр - име на полето искам да направя валидиране срещу

  • Трябва да позволяват само символи от тип "Алфа"
  • Оставете място
  • Разрешаване на някои специални знаци - _ / - . ’

Опитах,

 ng-pattern="/^[a-z]+[_++/+-+.+’][a-z]*$/"

Изглежда, че съм пропуснал нещо, тъй като не работи!

Отговори:

3 за отговор № 1

Да видим:

  • Трябва да позволяват само символи от тип "Алфа" => [a-zA-Z]
  • Оставете място => [ ] или s
  • Разрешаване на някои специални знаци - _ / - . ’ " => [_\/.’"-]

Така че, съчетавайки всичко това, моделът ще изглежда така:

ng-pattern="/^[a-zA-Z _\/.’"-]+$/"

Това съвпада с 1 или повече (+) символи от разрешения набор.

За да забраните водещото / крайното бяло пространство, използвайте

ng-pattern="/^[a-zA-Z_\/.’"-]+(?: +[A-Za-z_\/.’"-]+)*$/" ng-trim="false"

Вижте регекс демо

Най- ng-trim="false" ще предотврати отрязването на входа, изпратен до двигателя с регенерация. Новият регекс ще съвпадне:

  • ^ - стартиране на низ
  • [a-zA-Z_\/.’"-]+ - 1 или повече букви или разрешени символи, различни от интервала
  • (?: +[A-Za-z_\/.’"-]+)* - нула или повече последователности от:
    • + - (или, s+) - 1 или повече интервали (бяло пространство)
    • [A-Za-z_\/.’"-]+ - виж по-горе
  • $ - края на низа.

1 за отговор № 2

/^([a-z _/."-])+$/i би направил. Ако искате пространство характер вместо просто пространство, използвайте /(^[a-z_/."-]|s)+$/i.