【发布时间】:2016-11-11 13:16:32
【问题描述】:
我正在尝试在 Angular 中创建一个可以从远程端点配置的输入指令。
下面的对象应该产生一个带有type=text 的输入字段,并且只有当输入是一个 6 位数字时才应该设置为有效。
{
inputfield: {
"name": "6-digit code",
"type": "text",
"pattern": "/^\d{6}$/"
}
}
我遇到的问题是,如果我使用 $setValidity 并使用从 pattern 生成的正则表达式检查值,我会得到以下信息:
var pattern = new RegExp("^\d{6}$");
console.log(pattern.toString());
=> "/^d{6}$/"
这很好,因为 \ 已按预期转义。我确实可以访问传递数据的端点。此端点是用 Java 编写的 REST 端点。所以在端点,正则表达式定义如下:
String regex = "/^\\d{6}$/";
所以,总结一下:
From endpoint: "/^\\d{6}$/"
Received at client: "/^\d{6}$/"
Constructing RegExp from the received object gives: "/^d{6}$/"
Wanted RegExp: /^\d{6}$/
是否可以在不使用四斜杠(即"/^\\\\d{6}$/")在端点声明正则表达式的情况下实现这一点?
【问题讨论】:
标签: javascript java angularjs regex