Валидатор Angular 4 работает по-другому при развертывании на сервере

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

`экспортная функция currencyAmountValidator (control: AbstractControl) {

var передано = / ^ (\ £)? ([1-9] {1} [0-9] {0,2}) (\, \ d {3}) (. \ d {2}) ? $ | ^ (\ $)? ([1-9] {1} [0-9] {0,2}) (\ d {3}) (. \ D {2})? $ | ^ (0)? (. \ D {2})? $ | ^ (\ $ 0)? (. \ D {2})? $ | ^ (\ $.) (\ D {2})? $ / gm.test (контрольное значение);

возврат прошел? ноль: {недействительно: истина}; } `

Он позволяет вводить такие значения, как: 100, 100 фунтов стерлингов, 123,45 фунтов стерлингов, 1300 фунтов стерлингов.

Однако, когда я развертываю на сервере, он не позволяет использовать символ £ в начале, но позволяет использовать $. Почему он работает по-разному при работе локально и на сервере?


person Paul    schedule 14.02.2019    source источник
comment
это регулярное выражение не допускает £100 и £123.45, проверьте его на regex101   -  person Iftifar Taz    schedule 14.02.2019
comment
Работает ли $ simple на вашем местном? Если нет, то я бы подумал, что между вашим компьютером и сервером может быть разница в настройках местоположения.   -  person dmoore1181    schedule 14.02.2019


Ответы (1)


Мое решение заключалось в использовании xA3 вместо £ в регулярном выражении, поэтому это регулярное выражение делает то, что я хочу, даже после развертывания на сервере:

/^(\xA3)?([1-9]{1}[0-9]{0,2})(\,\d{3})(.\d{2})?$|^(\xA3)?([1-9]{1}[0-9]{0,2})(\d{3})(.\d{2})?$|^(0)?(.\d{2})?$|^(\xA30)?(.\d{2})?$|^(\xA3.)(\d{2})?$/gm

Webpack (компиляция Angular в мини-файлы), должно быть, возился с £

person Paul    schedule 14.02.2019