我有一个正则表达式模式需要在 ui-router ( docs ) 中匹配。我在 Angular 准备之外测试了正则表达式:
(?=.*\d)(?=.*[a-zA-Z0-9])\w{8}
我需要 8 个字符,其中一个是任意位置的数字。
当我将其插入我的 Angular 应用程序时,出现路由错误。这是我的代码:
var accountNumberParam = '{accountNumber:(?=.*\d)(?=.*[a-zA-Z0-9])\w{8}}',
var states = [
{
name: 'name',
url: '/' + accountNumberParam,
templateUrl: '/path/to/my.html',
controller: 'MyCtrl'
},
]
我尝试过带或不带前导/尾随“/”字符。我认为这是一个格式化问题,但我找不到任何关于格式化方式和文档的不同之处。感谢您的帮助。
请您参考如下方法:
您需要确保您的正则表达式字符串已正确转义。
这是因为在本例中您没有使用 Javascript 正则表达式原语,而是依赖于字符串。
将正则表达式存储为字符串值时,您需要确保转义两次,以确保不会出现任何无意的转义。
var accountNumberParam = '{accountNumber:(?=.*\\d)(?=.*[a-zA-Z0-9])\\w{8}}';
var states = [{
url: '/' + accountNumberParam,
template: '<h1>TEST : {{accountNumber}}</h1>',
controller: testController,
}];