У меня есть шаблон регулярного выражения, который мне нужно сопоставить в 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'
},
]
Я пробовал с и без ведущих/конечных символов "/". Я думаю, что это проблема форматирования, но я не могу найти ничего похожего на способ форматирования и документацию. Спасибо за помощь.
Вы должны убедиться, что строка регулярного выражения правильно экранирована.
Это связано с тем, что в этом случае вы не используете примитив регулярных выражений Javascript, но вместо этого полагаетесь на строки.
При сохранении вашего Regex в качестве строкового значения вам нужно убедиться, что вы дважды убегаете, чтобы не было никаких непреднамеренных экранов.
var accountNumberParam = '{accountNumber:(?=.*\\d)(?=.*[a-zA-Z0-9])\\w{8}}';
var states = [{
url: '/' + accountNumberParam,
template: '<h1>TEST : {{accountNumber}}</h1>',
controller: testController,
}];