Угловое регулярное выражение ui-router вызывает ошибку

0

У меня есть шаблон регулярного выражения, который мне нужно сопоставить в ui-router (docs). Я проверил регулярное выражение вне угловой готовности:

(?=.*\d)(?=.*[a-zA-Z0-9])\w{8}

Мне нужно 8 символов, одна из которых - цифра в любой позиции.

Когда я вставляю его в свое угловое приложение, я получаю ошибки маршрутизации. Вот мой код:

var accountNumberParam = '{accountNumber:(?=.*\d)(?=.*[a-zA-Z0-9])\w{8}}',
var states = [
    {
            name: 'name',
            url: '/' + accountNumberParam,
            templateUrl: '/path/to/my.html',
            controller: 'MyCtrl'
     },
]

Я пробовал с и без ведущих/конечных символов "/". Я думаю, что это проблема форматирования, но я не могу найти ничего похожего на способ форматирования и документацию. Спасибо за помощь.

  • 0
    Вы пытались сделать его угловой константой, ввести ее и использовать оттуда?
  • 0
    Нет, превращение его в константу ничего не меняет
Теги:
angular-ui-router

1 ответ

1
Лучший ответ

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

Это связано с тем, что в этом случае вы не используете примитив регулярных выражений Javascript, но вместо этого полагаетесь на строки.

При сохранении вашего Regex в качестве строкового значения вам нужно убедиться, что вы дважды убегаете, чтобы не было никаких непреднамеренных экранов.

var accountNumberParam = '{accountNumber:(?=.*\\d)(?=.*[a-zA-Z0-9])\\w{8}}';
var states = [{
  url: '/' + accountNumberParam,
  template: '<h1>TEST : {{accountNumber}}</h1>',
  controller: testController,
}];
  • 0
    Работал отлично - спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню