我有一个正则表达式模式需要在 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, 
}]; 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!