Производительность объекта RegExp - PullRequest
1 голос
/ 30 апреля 2020

В следующем коде

я бы хотел улучшить производительность, поместив объект RegExp куда-нибудь, но не могу понять, как сделать гнездо.

@ValidatorConstraint()
export class RegExp implements ValidatorConstraintInterface {
  validate(kana: string, args: ValidationArguments) {
    const str = new RegExp(/^[ァ-ヶー]+$/)
    return str.test(kana)
  }

  defaultMessage(args: ValidationArguments) {
    return 'Text should be'
  }
}

спасибо

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Если вам нужно только регулярное выражение - просто используйте встроенный Matches валидатор:

@Matches(/^[ァ-ヶー]+$/)
public field: string;

В этом случае он будет повторно использовать регулярное выражение при каждой проверке.

1 голос
/ 30 апреля 2020

Я думал об этом так.

const regexp = new RegExp(/^[ァ-ヶー]+$/)

@ValidatorConstraint()
export class RegExp implements ValidatorConstraintInterface {
  validate(kana: string, args: ValidationArguments) {
    return regexp.test(kana)
  }

  defaultMessage(args: ValidationArguments) {
    return 'Text should be'
  }
}
...